Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Buscar en dos campos como uno (https://www.clubdelphi.com/foros/showthread.php?t=32)

X-JABS 04-05-2003 15:51:53

Buscar en dos campos como uno
 
Saludos Foro!

Para iniciar, necesito saber como hacer una busqueda en dos campos como si fuera uno solo,

P/E:

[ APELLIDOS ] [ NOMBRE ]
MARTINEZ DE LA BARCENA JAVIER

y el usuario buscaría..

javier martinez de la barcena

como puedo hacerlo: con SQL, con FILTER, a ver si alguien puede iluminarme..

__cadetill 04-05-2003 16:00:25

con una instruccion SQL es posible

Código:

select *
from clientes
where upper(apellidos) like upper('%MARTINEZ DE LA BARCENA%') and
      upper(nombre) like upper('%JAVIER%')

espero sea esto lo que querias

NOTA : casi se llama como yo :D

marcoszorrilla 04-05-2003 16:38:27

Table1.Filter:='Apellidos='+QuotedStr(Edit1.Text)+'And Nombre ='+QuotedStr(Edit2.Text);
Table1.Filtered:=True;

Esto funcionará siempre y cuando la búsqueda resulte exacta, es decir no sirve para valores aproximados.

También podrias utilizar LOCATE.

Un saludo.

roman 07-05-2003 21:10:43

Cita:

Posteado originalmente por cadetill
Código:

select *
from clientes
where upper(apellidos) like upper('%MARTINEZ DE LA BARCENA%') and
      upper(nombre) like upper('%JAVIER%')


Pero esto supondría que sabemos cómo separar el nombre de los apellidos y en tal caso quizá no habría la necesidad de buscar como si fuera un sólo campo. ¿No sería mejor algo así como?

Código:

select * from clientes
where upper(concat(nombre, ' ', apellidos)) like 'JAVIER MARTINEZ DE LA BARCENA'

De esta forma podríamos pasar toda la cadena como parámetro.

// Saludos

X-JABS 08-05-2003 14:39:26

Saludos Foro,

Gracias por sus respuestas, me han valido, en especial a Roman, que era mas lo que necesitaba..

Tk's.

X-JABS 09-05-2003 06:39:46

Una duda mas!

en la consulta de pronto aparece el mensaje

"la función "upper" no esta definida en la expresión"

lo mismo pasa para para "CONCAT",

"la función "concat" no esta definida en la expresión"

, que pasa el motor de la base de datos no soporta estas instrucciones?

Utilizo ACCESS y DAO, ADO...??

muchas gracias...

X-JABS 09-05-2003 07:10:05

Bueno solo me he contestado,
ciertamente era lo que sexospechaba,

para MS Access seria así:


SELECT * FROM TblPacientes
WHERE UCASE(Nombre+' '+Apellidos) Like '*JAVIER MARTINEZ DE LA BAR*';

Lo comento en el foro, para que sirva a alguien mas,
como dije antes, otra vez gracias a las personas que me dieron una solución!

Ho!, ademas agrego el link de la pagina que me ha sacado de la duda, por que hay otras especificiones que pueden ayudar en SQL..

http://www.qsl.net/

Saludos!

roman 09-05-2003 08:32:59

Tienes razón x-jabs, faltó aclarar que las funciones upper y concat dependen del dialecto sql en particular. Pero la idea era convertir el texto en mayúsculas para la comparación y concatenar cadenas. Incluso los asteriscos que usas también dependen del sql que específico. En Paradox, por ejemplo, se usa % en lugar de *.

Que bueno que ya pudiste resolver tu problema.

// Saludos

pd: Le echaré un vistazo a la página que indicas.


La franja horaria es GMT +2. Ahora son las 13:50:48.

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