PDA

Ver la Versión Completa : ClientDatasets, filtros y "LIKE" que filtra parcialmente, como se le da la gana


Walterio
17-04-2012, 14:11:40
Hola a todos.
Seguramente, me verán hacer varias preguntas sobre Clientdataset, es que recien ahora los estoy usando y hay ciertas cosas que desconozco.
Mi escenario de trabajo es :
Delphi 6 con MySQL.
TQuery, provider, clientdataset y dbgrid.
El stema es el siguiente :
Tengo una dbgrid que muestra, segun la opción elegida por el usuario, distintas consultas.El tema es que tengo armado una especie de filtro que me muestra en un form las opciones para filtrar cualquiera de esos campos según el valor que se ingresa.
Hasta alli, bien (esta misma grilla, pero con tablas DBF funciona perfecto).El tema está que, cuando tengo que filtrar un campo definido como VARCHAR en MySQL, sólo me filtra por las primeras tres letras, si le pongo cuatro, ya no funciona el filtro.
Esto es algo asi como :

sFiltroCampo := oField.FieldName + ' LIKE Upper('+ QuotedStr('%'+ txtCadena.text +'%')+')';

Se lo asigno a la propiedad filter delclientdataset y sólo me toma las tres primeras letras ingresadas.Los campos numéricos y de fcehas funcionan a la perfección.
Alguna pista?

Casimiro Notevi
17-04-2012, 14:32:04
Recuerda poner los tags al código fuente, ejemplo:
http://neftali.clubdelphi.com/images/UtilizarTAGs.png

Y pon el código que usas para que lo veamos, será más fácil para poder ayudar :)

Walterio
17-04-2012, 15:06:49
Ups...es verdad, mis diculpas por la torpeza.
Aqui transcribo corregida la pregunta :

Hola a todos.
Seguramente, me verán hacer varias preguntas sobre Clientdataset, es que recien ahora los estoy usando y hay ciertas cosas que desconozco.
Mi escenario de trabajo es :
Delphi 6 con MySQL.
TQuery, provider, clientdataset y dbgrid.
El stema es el siguiente :
Tengo una dbgrid que muestra, segun la opción elegida por el usuario, distintas consultas.El tema es que tengo armado una especie de filtro que me muestra en un form las opciones para filtrar cualquiera de esos campos según el valor que se ingresa.
Hasta alli, bien (esta misma grilla, pero con tablas DBF funciona perfecto).El tema está que, cuando tengo que filtrar un campo definido como VARCHAR en MySQL, sólo me filtra por las primeras tres letras, si le pongo cuatro, ya no funciona el filtro.
Esto es algo asi como :

sFiltroCampo := oField.FieldName + ' LIKE Upper('+ QuotedStr('%'+ txtCadena.text +'%')+')';

Se lo asigno a la propiedad filter delclientdataset y sólo me toma las tres primeras letras ingresadas.Los campos numéricos y de fcehas funcionan a la perfección.
Alguna pista?