PDA

Ver la Versión Completa : Buscar en ADOTable mientras se escribe.


zeta2
23-05-2016, 02:49:34
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.


... 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:

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....