Ver Mensaje Individual
  #1  
Antiguo 04-11-2008
nolo nolo is offline
Miembro
 
Registrado: oct 2008
Posts: 12
Reputación: 0
nolo Va por buen camino
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
Responder Con Cita