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'); 2: TS.Add('EDAD > :EDA'); 3: TS.Add('EDAD < :EDA'); 4: TS.Add('EDAD BETWEEN :EDA AND :EDA2') 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.