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)
-   -   Como realizo estas busquedas ??? (https://www.clubdelphi.com/foros/showthread.php?t=15762)

Durbed 04-11-2004 10:14:47

Como realizo estas busquedas ???
 
Trabajo con IB6.5 y Delphi 7, y tengo que buscar en una tabla personas y empresas pero la idea es que para buscar a Juan Gonzalez Sanchez, pueda poner en la busqueda algo asi:
ju sanc gon
y que me de como resultado todas las personas que coincidan con esos parametros, sin importar el orden de los parametros y sin saber cuantos parametros de busqueda van ha introducir los usuarios.

Gracias.

Neftali [Germán.Estévez] 04-11-2004 11:01:42

Cita:

Empezado por Durbed
...pueda poner en la busqueda algo asi:
ju sanc gon
y que me de como resultado todas las personas que coincidan con esos parametros

Deberías utilizar el operador Like, aunque ésta forma de trabajar es un poco extraña. ¿Quieres que aparezcan los que tienen todas las ocurrencias? ¿O los que tienen como mínimo una? ¿En un único campo o en varios?

Código SQL [-]
 ...(Nombre LIKE 'ju%') or (Nombre LIKE 'sanc%') or (Nombre LIKE 'gon%')

(puedes cambiar el OR por AND), pero ya te digo que no acabo de verlo claro...

Durbed 04-11-2004 11:18:02

En varios campos, como pueden ser: Nombre, apellidos, empresa y se tienen que cumplir todos los parametros, es decir que me imagino que sera algo asi:
Código:

((Nombre LIKE 'ju%') or (Nombre LIKE 'sanc%') or (Nombre LIKE 'gon%')) and
((Apellidos LIKE 'ju%') or (Apellidos LIKE 'sanc%') or (Apellidos LIKE 'gon%')) and
((Empresa LIKE 'ju%') or (Empresa LIKE 'sanc%') or (Empresa LIKE 'gon%'))

Visto esto, solo faltaria resolver el tema del numero de parametros. Sacar el numero de parametros no es dificil, pues es recorrer la cadena y ver los espacios en blanco o las comas (no tengo decidido el metodo de separacion), pero una vez que tengo los parametros separados como genero la consulta?

Gracias.

Neftali [Germán.Estévez] 04-11-2004 11:46:42

Sigo pensando que es un poco extraño y no se que eficiencia puede tener una consulta de este tipo, pero bueno...

Para montar la consulta deberás hecer un While que segun el número de parámetros te monte el Where de la consulta de la forma que tú mismo has definido. Segun el número de las palabras es ir añadiendo elementos a la parte del OR.

Si no te acalras con éste trozo de código dilo.

Durbed 04-11-2004 15:16:19

Ya lo tengo resuelto, he añadido otro % al principio de la cadena para que no tenga que comenzar por ese caracter. Respecto a la utilidad de esa busqueda es mucha prque si quieres buscar una persona que se llama juan pero tienes 1000 juanes y solo sabes que de apellido es gomez o gonzalez o algo similar, pues buscar juan go y asi te aseguras un resultado mas ajustado.


La franja horaria es GMT +2. Ahora son las 13:58:03.

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