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 ADOTable mientras se escribe. (https://www.clubdelphi.com/foros/showthread.php?t=90356)

zeta2 23-05-2016 02:49:34

Buscar en ADOTable mientras se escribe.
 
Muchachos, he buscado y nadie soluciona el problema con ADOTable, muchos hablan método Locate y la verdad no me sirve. Necesito buscar como lo hacía en paradox y esta es una db de access.

Necesito buscar en una tabla cuyo campo es AYN (Apellido y Nombre) mientra escribo. Utilizando el método Locate funciona pero busca al completar la palabra, Setkey y Gotonearest no me funcionan con ado, el filtro tampoco. Que puedo hacer?

Espero que puedan ayudarme ya agoté todos los recursos y no quiero usar sql a esta altura por que quiero terminar con esto, entregarlo y olvidarme de este cliente que me provoca verdaderos dolores de cabeza.

Saludos y gracias.

Atte. Marco.

Caral 23-05-2016 03:06:31

Hola
Para mi la solución de un filtro dinámico la vas a tener que hacer con sql, no le veo ningún inconveniente usarlo.
Saludos

Neftali [Germán.Estévez] 23-05-2016 10:07:31

Tal y como comenta Caral, lo puedes hacer con un TADOQuery y un filtro.

Código SQL [-]
... WHERE AYN like '%valor%'

Otra cosa es que sea recomendable o no hacerlo. En mi opinión no, porque estás generando mucho tráfico innecesario a la Base de Datos.

ecfisa 23-05-2016 14:22:07

Hola.

Como te comentaron, la forma usual es enviando una consulta sql mediante un ADOQuery, aunque también podrías hacerlo con un ADOTable usando la propiedad Filter.

Un ejemplo usando Filter en el evento OnChange de un Edit:
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
  ADOTable1.Filtered := False;
  if Edit1.Text > '' then
  begin
    ADOTable1.Filter   := Format('NAME LIKE %S', [QuotedStr('%' + Edit1.Text + '%')]);
    ADOTable1.Filtered := True;
  end;
end;
(No olvides el consejo que te dieron, las búsquedas incrementales generan un alto tráfico de datos desde y hacia la BD).

Saludos :)

rastafarey 30-05-2016 03:13:29

Dios eso es bastante ineficiente si estas conectado a la base de datos, solo es aceptable si estas trabajando con 7n dataset en memoria. Aun un query o el locate te solucionar, pero es muy mala práctica a excepción que tengas el dataset en memoria

Enviado desde mi SM-G900H mediante Tapatalk

mamcx 30-05-2016 05:34:31

Y que problema hay con "mucho trafico"? Es un problema en este caso? Yo hago eso seguido y tengo respuestas en milisegundos.

Cual es el chiste de tener un RDBMS y no usarlo para lo que esta hecho?

Ademas, es *Acces*. Ni que estuviera conectado por internet....


La franja horaria es GMT +2. Ahora son las 23:38:49.

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