Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Busquedas en varios campos a la vez (https://www.clubdelphi.com/foros/showthread.php?t=53137)

RoyTan 12-02-2008 00:51:37

Busquedas en varios campos a la vez
 
Saludos.

Vamos a ver, en mi base de datos Clientes tengo tres campos que contienen Telefonos, con este codigo colocado en el evento OnKeyPress puedo buscar un número de télefono en los tres campos y funciona perfecto.

if Key = #13 then

Begin

If not ModuloDatos.TCliente.Locate('TELEFONO1',EBuscar.Text,[]) then

If not ModuloDatos.TCliente.Locate('TELEFONO2',EBuscar.Text,[]) then

If not ModuloDatos.TCliente.Locate('TELEFONO3',EBuscar.Text,[]) then

ShowMessage('Número de Teléfono no encontrado.');

EBuscar.Clear;

end;


Mi pregunta es...

¿ Como seria el codigo en SQL ? :confused:

Gracias.

Delphius 12-02-2008 01:00:04

Hola RoyTan,

¿Deseas buscar por el AND (Y) o por el OR (O)?
No se termine de comprender...
la idea es esta:

Código SQL [-]
select tus_campos
from tu_tabla
where TELEFONO1 = :TelBuscar AND TELEFONO2 = :TelBuscar AND TELEFONO3 = :TelBuscar

Y en delphi en el query ingresar el parámetro y lanzas la consulta:

Código Delphi [-]
tu_query.ParameterByName('TelBuscar') := EBuscar.text;
tu_query.ExectSQL;

Lo escribí de memoria... no tengo delphi abierto a mano...
Si tienes dudas buscar por ParamByName. o parámetros.

Saludos,

RoyTan 12-02-2008 01:13:31

Hola Delphius, Saludos desde España.

La idea es la siguiente...

Ingresar un número de teléfono en un Edit para que lo busque en tres campos de una base de datos Dbf.

Si no encuentra el número en el primer campo(Telefono1), que pase al siguiente Campo(Telefono2), que no lo encuentra, que busque en el siguiente campo(Telefono3) que no lo encuentra, ShowMessage('Número de teléfono no encontrado');

Que lo encuentra en cualquiera de los campos, pues que detenga la busqueda.

Y perdon por no haberme explicado bien antes.

Saludos y gracias.

jachguate 12-02-2008 01:21:56

La sentencia SQL parece bien, solo que el operador debiera ser or, y no and.

Hasta luego.

;)

jachguate 12-02-2008 01:25:33

Cita:

Empezado por RoyTan (Mensaje 265109)
Que lo encuentra en cualquiera de los campos, pues que detenga la busqueda.

Para detener la búsqueda después de la primera coincidencia no hay un método 100% estándar, pues cada motor tiene sus propias implementaciones.

Por ejemplo, en oracle podría ser:

Código SQL [-]
select *
  from (select * 
          from tutabla
         where telefono1 = :tel
            or telefono2 = :tel
            or telefono3 = :tel
       )
 where rownum = 1;

Para mostrar el mensaje, pues exploras el resultado y si está vacío lo lanzas, pero esto ya en delphi. No podes mostrar un mensaje al usuario desde el motor de base de datos.

Hasta luego.

;)

RoyTan 12-02-2008 01:35:37

Ok, de acuerdo, y muchas gracias a los dos.


La franja horaria es GMT +2. Ahora son las 00:04:47.

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