PDA

Ver la Versión Completa : Buscar en dos campos como uno


X-JABS
04-05-2003, 15:51:53
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


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
Posteado originalmente por cadetill

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?


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/ (http://www.qsl.net/ea6vq/docsql_e.html)

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.