Ver Mensaje Individual
  #2  
Antiguo 17-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 28
jachguate Va por buen camino
Cool

En casos como este yo he tenido que darle varias vueltas al asunto y no ha podido ser con null's... asi que lo que he hecho es crear valores "bandera" que me indican como actuar... algo como

Código:
where (:TodosLosClientes = 'S' or IdCliente = :IdCliente) and
        (:TodosLosTipos = 'S' or idTipo = :idTipo)
Es bastante engorroso, porque luego en delphi tenes que estar condicionando las asignaciones... pero al final, vas a obtener el resultado deseado:

Código:
  q1.ParamByName('TodosLosClientes').AsString := IfThenElse(eCliente.Text = '', 'S', 'N');
  q1.ParamByName('idCliente').AsInteger := IntToStr(eCliente.Text);  
  // esto en un try/except o alguna función que devuelva cualquier valor al elevarse la excepción... 
  q1.ParamByName('TodosLosTipos').AsString := IfThenElse(eTipo.Text = '', 'S', 'N');
  q1.ParamByName('idTipos').AsString := eTipo.Text;
etc, etc...

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 22-04-2004 a las 22:48:28. Razón: hacer mas pequeñas las líneas..
Responder Con Cita