Ver Mensaje Individual
  #10  
Antiguo 27-04-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 26
Delphius Va camino a la fama
Hola aanil no soy Lepe pero he visto tus dudas y creo que estás enfocando mal el problema.
Por empezar no sería adecuado el uso del TCheckBox, si mo más bien el del TRadioGroup. Con esto puedes garantizar de que elija una u otra opción o ninguna.

El truco consiste en armar el SQL a partes. Ante la pulsación de un Cick sobre el TRadio se arma diversas cadenas parciales que luego serán añadidas a la parte where de la consulta.
Por ejemplo:

Código Delphi [-]
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
   case RadioGroup1.ItemIndex of
   0: where_opcion1 := 'AND ALGO1';
   1: where_opcion1 := 'AND ALGO2';
   end;
end;

where_opcion1 es una variable del tipo string que por defecto asumirá el valor vacio.
Este proceso puede extenderse a todas la combinaciones posibles.

Como puedes observar en ningún momento estoy asignando la SQL, la estoy armando a partes.
Ahora es necesario contar con algún medio para confirmar las opciones. De este modo se puede asumir que es aquí cuando armamos la SQL y la podemos asociar al Query. Por ejemplo ante la pulsación de un TButtom:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var sql: string;
begin
  sql := string_select + where_opcion1 + where_opcion2;
  Query1.Sql.Text := sql;
  Query1.Open;
end;

En el ejemplo, string_select es un string que almacena la parte select. Algo como el "select ... from ....." y asumí que hay dos opciones para agregar a la consulta.

Volviendo atrás, he dicho que por defecto las cadenas where_xxxx están seteadas a vacio. De este modo garantizas que si no se ha optado por alguna selección el sql quede formado únicamente por la parte string_select.

Creo que esto puede serte de ayuda para comprender mejor el tema.
Igualmente recomiendo que mejores el código ya que existe un denominador común en tu código y se repite...

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita