Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   manejos de parametros (https://www.clubdelphi.com/foros/showthread.php?t=61345)

nolo 04-11-2008 18:17:05

manejos de parametros
 
hola tngo una consulta en sql... cargada en un dataset... bueno el tema es asi:
- mi consulta posee 3 parametros que estan manipulados por 3 CheckBox con 3 ComboBox...
- quiero q me ralize la consulta cuando estan los 3 checkBox activados o ninguno o dos o uno.. osea evaluando todas las posibiliadaes...
- no lo puedo hacer andar, solo me tira los datos de mi consulta si estan los 3 CheckBox activados...

Alguien tiene un ejemplo de como hacerlo?
les dejo el contenido de mi boton q me tira las consultas

Código Delphi [-]
procedure TClientesPorVendedor.Button1Click(Sender: TObject);
 var
  sQ: WideString;
  sFiltro: string;
 begin
  Screen.Cursor := crHourGlass;
  adsReporte.Close;
  try

   //if dblcVendedor.Enabled or dblcLocalidad.Enabled or dblcListaPrecio.Enabled then
   begin
   sQ:= ' SELECT Clientes.idCliente, Clientes.sRazonSocial, Clientes.sDireccion, Clientes.idLocalidad, Clientes.sTelefono, Localidades.sNombre'+
        ' FROM Clientes LEFT JOIN Localidades ON Clientes.idLocalidad = Localidades.idLocalidad'+
        ' WHERE 1 = 1'+
        ' AND idVendedor ='+intToStr(dblcVendedor.KeyValue)+
        ' AND idLista = '+intToStr(dblcListaPrecio.KeyValue)+
        ' AND Clientes.idLocalidad = '+intToStr(dblcLocalidad.KeyValue);
         adsReporte.CommandText := sQ;
         {adsReporte.Parameters.ParamByName('idVendedor').Value := intToStr(dblcVendedor.KeyValue);
         adsReporte.Parameters.ParamByName('idLista').Value := intToStr(dblcListaPrecio.KeyValue);
         adsReporte.Parameters.ParamByName('idLocalidad').Value := intToStr(dblcLocalidad.KeyValue);}
         adsReporte.Open;
   end
   finally
    Screen.Cursor := crDefault;
   end;

   if (CheckBox1.Checked) then
    sFiltro := 'idVendedor = '+intToStr(dblcVendedor.KeyValue)
    else
    sFiltro := '';
   if (CheckBox3.Checked) then
    begin
     if Length(sFiltro) > 0 then
     sFiltro := sFiltro + ' AND ';
     sFiltro := sFiltro  + 'idLista = '+intToStr(dblcListaPrecio.KeyValue)
    end
    else
      sFiltro := '';
   if (CheckBox2.Checked) then
    begin
     if Length(sFiltro) > 1 then
     sFiltro := sFiltro + ' AND ';
     sFiltro := sFiltro + 'idLocalidad = '+intToStr(dblcLocalidad.KeyValue)
     end
    else
     sFiltro := '';

   adsReporte.Filtered := false;
   adsReporte.Filter := sFiltro;
   adsReporte.Filtered := true;

end;

pido disculpas si el hilo no esta iniciado donde deberia ser.. desde ya muchas gracias

droguerman 04-11-2008 18:21:50

el problema está en los else que pones
Código Delphi [-]
else
  sFiltro='';

Antes de realizar los if inicializa sFiltro a vacio y quita esos else

saludos


La franja horaria es GMT +2. Ahora son las 08:41:05.

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