Ver Mensaje Individual
  #1  
Antiguo 13-11-2007
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Reputación: 20
mjjj Va por buen camino
TIBQuery multi busqueda

Hola amigos... ojala me puedan echar una mano con este problemita...

En un TForm tengo: 1 TDBGrid, 2 TRadiobutton, 8 TCheckbox, 1 TQuery y un TButton.

El TQuery busca en la tabla Presupuesto. Se puede buscar en 2 empresas distintas (dependiendo de cual TRadiobutton este chequeado). Ademas se puede buscar en las distintas AREAS (dependiendo de cuales TCheckbox este chequeado)

El codigo que tengo es asi....

Código Delphi [-]
if RADIOBUTTON1.CHECKED = TRUE then EMPRESA:='REIFOX';
if RADIOBUTTON2.CHECKED = TRUE then EMPRESA:='CAINSA';
 
IBQUERY1.Close;
IBQUERY1.SQL.CLEAR;
IBQUERY1.SQL.ADD('SELECT SUBAREA, MONTO FROM PRESUPUESTO');
IBQUERY1.SQL.ADD('WHERE EMPRESA ='+QUOTEDSTR(EMPRESA));

if CHECKBOX1.CHECKED = TRUE then
IBQUERY1.SQL.ADD('AND AREA =QUOTEDSTR('EXISTENCIAS'));
if CHECKBOX2.CHECKED = TRUE then
IBQUERY1.SQL.ADD('OR AREA ='+QUOTEDSTR('PESQUERA'));
if CHECKBOX3.CHECKED = TRUE then
IBQUERY1.SQL.ADD('OR AREA ='+QUOTEDSTR('REVESTIMIENTO'));
if CHECKBOX4.CHECKED = TRUE then
IBQUERY1.SQL.ADD('OR AREA ='+QUOTEDSTR('BOMBA Y VALVULAS'));
if CHECKBOX5.CHECKED = TRUE then
IBQUERY1.SQL.ADD('OR AREA ='+QUOTEDSTR('SANITARIA'));
if CHECKBOX6.CHECKED = TRUE then
IBQUERY1.SQL.ADD('OR AREA ='+QUOTEDSTR('EXPLOTACION AREA SERVICIOS'));
if CHECKBOX7.CHECKED = TRUE then
IBQUERY1.SQL.ADD('OR AREA ='+QUOTEDSTR('APOYO PRODUCCION'));
if CHECKBOX8.CHECKED = TRUE then
IBQUERY1.SQL.ADD('OR AREA ='+QUOTEDSTR('ADMINISTRACION Y VENTAS'));

IBQUERY1.Open;

... funciona bien, el problema se me presenta cuando no tengo chequeado el checkbox1, porque ese es el que tiene la sentencias 'AND'...

Como puedo hacer para que me busque en las AREA que tengo chequeadas... alguien tiene alguna idea...

saludos... gracias
Responder Con Cita