Delphi - Locate en ADOQuery para múltiples campos

 
Vista:

Locate en ADOQuery para múltiples campos

Publicado por bolofp (23 intervenciones) el 13/04/2007 10:00:04
Hola,

estoy iniciandome en la programación en DELPHI y no encuentro salida para un problema con el que me he encontrado. Quiero hacer un locate de múltiples (muchos) campos en un ADOQuery de la siguiente manera. Quiero buscar por el nombre, los apellidos y bastantes campos más a un alumno, pero sólo dispongo de una caja de texto para introducir los datos de búsqueda, de manera que según se vayan insertando los caracteres en la caja se vaya posicionando el cursor en el grid ¿ Habría manera de conseguir esto?

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:Locate en ADOQuery para múltiples campos

Publicado por E.T. (1244 intervenciones) el 13/04/2007 17:03:43
Que tal, primero tendrías que separar cada palabra introducida en la caja de texto, luego llamar el procedimiento LOCATE asociando cada palabra con el campo del query

Busca la nota "ayudenme con codigo Ac1d0k" aqui en el foro, está un poco más abajo y en ella se explica como extraer cada palabra por separado y mas abajo dentro de esta misma nota se explica como hacer la búsqueda

Suerte, si no puedes escribe de nuevo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Locate en ADOQuery para múltiples campos

Publicado por bolofp (23 intervenciones) el 16/04/2007 09:48:31
Antes de nada, muchas gracias por la respuesta. Esa es una buena idea, pero el tema es que necesito, que a medida que se va introduciendo el texto, se vaya posicionando en la fila del grid, como sucede cuando tratas con un solo campo en el método locate.

Alguna idea?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Locate en ADOQuery para múltiples campos

Publicado por nombre (106 intervenciones) el 16/04/2007 11:00:30
Con Locate a dos campos

Una forma
Table.Locate('Mes;Dia',VarArrayof([Mes,Dia]),[])

Otra forma sin array
datasource1.dataset.locate('fecha;hora;dni',[valorDeFecha, ValordeHora, ValorDeDNI],[])
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Locate en ADOQuery para múltiples campos

Publicado por bolofp (23 intervenciones) el 16/04/2007 13:46:13
El problema de esa solución, es que deben estar todos los campos completos y deben ser correctos para que haga la búsqueda. Por ejemplo, si quiero buscar a David González, no me bastaría con incluir 'Dav' y 'Gonz' porque no lo encontraría.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:Locate en ADOQuery para múltiples campos

Publicado por E.T. (1244 intervenciones) el 16/04/2007 17:02:06
De acuerdo, lo que tendrias que hacer es usar un query y poner lo siguiente:

En el evento OnChange de un edit lo siguiente

procedure TfmBusqueda_Clientes.edValorChange(Sender: TObject);
begin
with qryBusqueda do begin
Active:=False;
SQL.Clear;
SQL.Add('SELECT *');
SQL.Add('FROM tablas');
SQL.Add('WHERE UPPER( APELLIDO_PATERNO||'+QuotedStr(' ')+'||APELLIDO_MATERNO||'+QuotedStr(' ')+'||NOMBRE ) LIKE UPPER('+QuotedStr('%'+edValor.Text+'%')+') ORDER BY Apellido_Paterno, Apellido_Materno, Nombre');
Active:=True;
end;
end;

O tambien busca elsta nota

RE:Probrema con LIKE E.T. (22/03/2007)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Locate en ADOQuery para múltiples campos

Publicado por bolofp (23 intervenciones) el 17/04/2007 07:56:55
Muchas gracias por las respuestas a todos. Al fin lo consegui con algun que otro truquillo, pero quedó bastante bien.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Locate en ADOQuery para múltiples campos

Publicado por nombre (106 intervenciones) el 16/04/2007 17:17:24
Al final, en la última opción entre corchetes, puedes poner loCaseInsensitive para buscar independientemente de si está en mayúsculas o minúsculas y también puedes poner loPartialKey para buscar parcialmente, y este parece ser el caso que a tí te interesa. O puedes poner las dos separadas por coma.

por ejemplo

DataSetClientes.Locate('NOMBRE', EditNombre.Text, [loPartialKey, loCaseInsensitive]);

De la ayuda de Delphi

TLocateOptions defines the values for the Options parameter of the Locate method of a dataset.

Unit

DB

type
TLocateOption = (loCaseInsensitive, loPartialKey);

loCaseInsensitive Key fields and key values are matched without regard to case.
loPartialKey Key values can include only part of the matching key field value; for example, 'HAM' would match both 'HAMM' and 'HAMMER.'
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Locate en ADOQuery para múltiples campos

Publicado por jonathan gordillo (1 intervención) el 26/04/2007 04:31:12
como se declaran y como se manipulan registro, campos y archivos en delphi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Locate en ADOQuery para múltiples campos

Publicado por el sho (1 intervención) el 17/04/2007 00:59:58
alguien podria ayudar en unas consutas que estoy haciendo utulisando el adoquery
un ejemplo porfavor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:Locate en ADOQuery para múltiples campos

Publicado por E.T. (1244 intervenciones) el 17/04/2007 01:43:00
Si podrian, si dijeras que quieres buscar sería más facil ayudarte.

Por lo pronto busca esa nota:

RE:ayudenme con codigo E.T. (10/04/2007) ahi viene algo de sql

concatenar Leticia (24/02/2007) en esta tambien
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar