Ver Mensaje Individual
  #5  
Antiguo 14-11-2012
jsc jsc is offline
Miembro
 
Registrado: nov 2003
Posts: 144
Reputación: 21
jsc Va por buen camino
Cita:
Empezado por olbeup Ver Mensaje
Cual son los resultados no esperado, cual es la SQL que has escrito, los que dice ecfisa es correcto y no debes de tener ningún problema.

Da igual que el campo este en blanco o incluso sea nulo, cuando se cumpla uno de los OR te lo va a mostrar.

Un saludo
disculpad,
quiza no me explique del todo bien
probe lo que comentaba ecfisa y me funciono bien pero solo si encontraba una coincidencia. si hay varias coincidencias no me devuelve bien el resultado.
en el ejemplo que puse arriba:
Código:
edit1.text := '%jsc%' //valor de nombre
edit2.text := '%1%'//valor de direccion
y me devuelve
Código:
nombre direccion tlf1 tlf2
jsc1     direccion1
jsc2     direccion2
cuando yo lo que busco seria

Código:
nombre direccion tlf1 tlf2
jsc1     direccion1
yo lo que busco es que la consulta la haga en base a los parametros que se le pasa.
Código:
sql.add ('SELECT * FROM TABLA') ;
if s<>'todos'
  then
     begin
        sql.add (' where NOMBRE like :nomb AND DIRECCION like :direc AND TELEF1 like :tlf1 AND TELEF2 like :tlf2');
        parambyname ('nomb').asstring := '%'+edit1.Text+'%' ;
        parambyname ('direc').asstring := '%'+edit2.text+'%';
        parambyname ('tlf1').asstring := '%'+edit3.text+'%';
        parambyname ('tlf2').asstring := '%'+edit5.text+'%'
si edit1 (nombre) contiene datos, el valor de (l'nomb') sera edit1.text
si edit2 no contiene datos, entonces, el valor de ('direct') tendria que ser todo;
para ello se me ocurre hacerlo como en el ejemplo y pasar al parametro ('direc') que contenga cualquier valor
y con el resto de los edit lo mismo

sino otra alternativa que se me ocurre puede ser algo asi:
Código:
query1.sql.add ('SELECT * FROM TABLA')

if edit1.text <> '' 
then 
   begin
      parambyname('nomb').asstring := edit1.text
      sql.add (' and NOMBRE like :nomb)
   end;
if edit2.text <>''
then
...
de la manera que intento hacerlo, el codigo es menor y mas visual para resolver posibles errores futuros
busco una consulta concatenando varios parametros

se me ocurrio hacerlo de esta manera quiza no es la correcta?aunque si reemplazo como digo los blancos por algun texto funciona perfecto

Última edición por jsc fecha: 14-11-2012 a las 14:15:46.
Responder Con Cita