Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-11-2007
mjjj mjjj is offline
Miembro
 
Registrado: mar 2007
Posts: 652
Poder: 18
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
  #2  
Antiguo 13-11-2007
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola mjjj, lo que yo haria seria utilizar un CheckListBox, el AND lo pondría donde esta tu Where, tu codigo quedaria mas o menos asi.

Código Delphi [-]
var
  i,flg:Integer;
begin
 flg := 0;
 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)+' AND ');

 for i:=0 to CheckListBox1.Items.Count-1 do
   begin
    if CheckListBox1.Checked[i]=true then     if flg=0 then //si es el primer item no añadimos el OR
     begin       QUERY1.SQL.ADD(' AREA ='+QUOTEDSTR(CheckListBox1.Items[i]));
      flg := 1;
     end
    else
     QUERY1.SQL.ADD(' OR AREA ='+QUOTEDSTR(CheckListBox1.Items[i]));  
  end;

  IBQUERY1.Open;

Estoy suponiendo que el texto de cada CheckBox seria el mismo al area a buscar.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.

Última edición por Caro fecha: 13-11-2007 a las 17:24:09.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TIbquery nenufer Conexión con bases de datos 6 02-05-2006 11:13:07
TIBTable ó TIBQuery Loviedo Firebird e Interbase 5 25-05-2005 16:40:25
Destruir un TIBQuery furniman Varios 1 25-03-2004 12:20:14
Base de datos multi área (multi departamento) Al González Conexión con bases de datos 0 19-03-2004 16:27:14
Problemas con In en TIBQuery Rabata Conexión con bases de datos 1 15-10-2003 13:56:59


La franja horaria es GMT +2. Ahora son las 13:05:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi