Ver Mensaje Individual
  #2  
Antiguo 29-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola naty_prog.

A primera vista te hago una sugerencia para el armado de la consulta SQL. Si estandarizas el primer campo de los combos (ItemIndex = 0) para ignorar la condición, se puede acortar bastante esa parte del código.

Por ejemplo:
Código Delphi [-]
function TForm_docente.MakeSQLString: string;
var
  TS: TStrings;
  i: Integer;
begin
  Result:= 'SELECT * FROM DOCENTE ';
  TS:= TStringList.Create;
  try
    if ComboBox1.ItemIndex > 0 then
      TS.Add('TIPODOC = :TIPO');
    if Combobox2.ItemIndex > 0 then
      TS.Add('ID_DOCENTE = :MAT');
    if ComboBox3.ItemIndex > 0 then
      TS.Add('ID_LOCALIDAD =:LOC');
    if ComboBox4.ItemIndex > 0 then
      TS.Add('SEXO = :SEX');
    case ComboBox5.ItemIndex of
      1: TS.Add('EDAD = :EDA'); // igual
      2: TS.Add('EDAD > :EDA'); // mayor
      3: TS.Add('EDAD < :EDA'); // menor
      4: TS.Add('EDAD BETWEEN :EDA AND :EDA2') // entre
    end;
    if TS.Count > 0 then
    begin
      Result:= Result + 'WHERE ';
      for i:= 0 to TS.Count-1 do
        if i < TS.Count-1 then
          Result:= Result + TS[i] + ' AND '
        else
          Result:= Result + TS[i];
    end;
    case ComboBox6.ItemIndex of
      1: Result:= Result + ' ORDER BY NOMBRE_APELLIDO ASC';
      2: Result:= Result + ' ORDER BY NOMBRE_APELLIDO DESC'
    end
  finally
    TS.Free
  end;
end;
En el ejemplo, para todos los combos el primer valor (índice 0) contiene el texto 'Ignorar'.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita