PDA

Ver la Versión Completa : Busqueda avanzada en un TClientDataset


Cecilio
07-01-2009, 13:11:45
Hola.

Siguiendo las instrucciones de un libro he creado una primera aplicacíon de agenda usando como base de datos un TClientDataSet.

Los datos se guardan en formato xml y va muy bien.

La pega es que me gustaría hacer busquedas del tipo sql usando "Like" para buscar algo en cualquier posición de un campo, y no solo lo que empiece por algo.

¿ como se puede hacer ? (si se puede)

droguerman
07-01-2009, 14:39:14
has probado usar filter?

juanelo
07-01-2009, 17:52:56
Yo diria, si has probado usar una base de datos.
Saludos

Caro
07-01-2009, 18:24:55
Hola, como te dice drogerman puedes utilizar filter y Like.


ClientDataSet.Filter := 'Campo Like '+QuotedStr('%'+Edit1.Text+'%');


Saluditos

Cecilio
07-01-2009, 21:14:47
Yo diria, si has probado usar una base de datos.
Saludos

he usado bases de datos desde hace muchos años, pero no en delphi ni ningun lenguaje parecido. Interbase, MySql, paradox, etc..

Cecilio
07-01-2009, 21:15:26
Hola, como te dice drogerman puedes utilizar filter y Like.

Código Delphi [-] (http://www.clubdelphi.com/foros/#) ClientDataSet.Filter := 'Campo Like '+QuotedStr('%'+Edit1.Text+'%');


Saluditos

Muuchas gracias.

juanelo
07-01-2009, 23:29:42
he usado bases de datos desde hace muchos años, pero no en delphi ni ningun lenguaje parecido. Interbase, MySql, paradox, etc..
Pues a no ser que la aplicacion no lo amerite, yo usaria una base de datos como firebird (la embeded si la aplicacion es pequeña y monousuario), para realizar querys.
Saludos

cheche358
29-10-2010, 04:57:31
Hola, como te dice drogerman puedes utilizar filter y Like.

Código Delphi [-] (http://www.clubdelphi.com/foros/#) ClientDataSet.Filter := 'Campo Like '+QuotedStr('%'+Edit1.Text+'%');


Saluditos

Perdon pero llego tarde a la fiesta...

Si alguien pudiese explicar mejor este codigo...?

Quien es "Campo Like" ?

Donde iria este código: OnChange del Edit1? OnFilterRecord del ClientDataSet?

Al González
29-10-2010, 06:27:59
Perdon pero llego tarde a la fiesta...

Si alguien pudiese explicar mejor este codigo...?

Quien es "Campo Like" ?

Donde iria este código: OnChange del Edit1? OnFilterRecord del ClientDataSet?

Eres el segundo Cheché que conozco. :p

Campo = Un campo cualquiera del conjunto de datos (data set).

Like = Una palabra reservada usada para indicar la condición de que una cadena de caracteres sea como (like) otra.

El uso de la propiedad Filter es básicamente:

ConjuntoDeDatos.Filter := ExpresionFiltroAUsar;
ConjuntoDeDatos.Filtered := True;

Al hacer eso, el conjunto de datos mostrará solamente los registros que cumplan con los criterios del filtro dado.

Si tienes más dudas pregunta con confianza, pero si el tema deriva en otro anímate a abrir otro hilo de discusión. Tu participación es bienvenida. :)

cheche358
29-10-2010, 06:44:49
jejeje gracias por responder Al...

Como aclaratoria; preguntaba por la aplicacion del codigo de filtrado en estos eventos porque me gusta utilizar lo que muchos llaman "busquedas incrementales", es decir, ir filtrando automaticamente la tabla mientras se escribe en el Edit de busqueda y asi lo he hecho y funciona a la perfeccion.

Me considero todavia un novato asi que no se si es apropiado lo que voy a preguntar:

Estos métodos de busqueda son mas propios de SQL?

Estoy trabajando actualmente con tablas en DBISAM, se puede implementar sin mayores problemas igual en tablas de escritorio?

willianrei
29-10-2010, 20:22:59
Hola Muchachos!

Yo estoy con un gran problema con firebird. Estoy haciendo una consulta que trae 30 registros. Muy bien. Cuando hago de un sistema delphi me trae 28 registros con la misma consulta y parámetros.
Que puede ser?
Si alguna persona ha tenido esto como problema, necesito su solución.


Saludos....