Cita:
Empezado por olbeup
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