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)
-   -   Filter no hace nada (https://www.clubdelphi.com/foros/showthread.php?t=43337)

ilichhernandez 08-05-2007 23:38:58

Filter no hace nada
 
Estimados, nuevamente recurro a ustedes pues he probado una par de manera de hacer un filter y no funciona, tengo un DBgrid que es fruto de una query, este dbgrid tiene un campo fecha (entre otros) y quiero mostrar por ejemplo los registros que tengan fecha 2007 solamente (por poner un ejemplo), he intentado con los siguientes codigos.

Código Delphi [-]
DBGrid1.DataSet.Filter := 'FECHA > DateTimePicker1.date';
DBGrid1.DataSet.Filtered := True;

Código Delphi [-]
DBGrid1.datasource.DataSet.Filter := 'Fecha >= datetostr(01/01/2007)';
DBGrid1.datasource.DataSet.Filtered := True;

Código Delphi [-]
DBGrid1.datasource.DataSet.Filter := 'Fecha >= datetostr(datetimepicker1.date)';
DBGrid1.datasource.DataSet.Filtered := True;

Si alguien me comentara en que me estoy equivocando quedaria muy agradecido.

Atentamente
Ilich Hernandez.

Chris 08-05-2007 23:55:30

Convertir a SQLTimeStamp
 
No estoy acostumbrado a trabajar con queries, talvez necesites convertir la fecha a a SQLTimeStamp, hay una función para hacer esto.

Para trabajar con los filtros de fechas yo lo hago así.

Código Delphi [-]
myTable.Filter := 'Fecha >= QuotedStr(DateToStr(DateTimePicker1.Datetime))
myTable.Filtered := True;

Fijate que llamo a la función QuotedStr la cual me devolverá algo como '08/05/2007' (con las comillas). Creo que ese es tu problemas que te faltaba el quotedStr.

Rodo_Rodo 09-05-2007 00:31:59

Mira Esto
 
Sabes yo Haria ese proceso directamente al Query, Filtras en elquery y como existe una relacion con el dbgrid por el datasourse el filtro que le hagas se te mostrara. Creelo Hice la prueba varias veces. Ahgi te mando el codigo espero te sirva By..

Código Delphi [-]Query1.Filter = Gestion='2007' Query1.Filter:=True



y Esto te realiza el filtro Pruebaloooo..:eek:

ilichhernandez 09-05-2007 22:09:47

voy a probar y luego les comento como me fue, gracias...:D

Caral 09-05-2007 23:56:16

Hola
Código Delphi [-]
DBGrid1.DataSet.Filter := 'FECHA >= '+DateToStr(DateTimePicker1.date);
DBGrid1.DataSet.Filtered := True;
La sentencia sql no puede contener el concatenado, se usa el signo + fuera de esta, revisalo.
Saludos

Caral 10-05-2007 00:10:34

Hola
La verdad sigo con esto-.
Cuando se hace un filtro se hace de algun componente que traiga la tabla en si.
Table, query.
El dataset, el datasource, ect, son conectores de estos hacia algun componente visual, como el dbgrid.
Con esto coincido con D&W, en cuanto al uso de estos componentes, un ejemplo con query.
Código Delphi [-]
Query1.Filter := 'FECHA >= '+DateToStr(DateTimePicker1.date);
Query1.Filtered := True;
Insisto en el uso del concatenado.
Saludos

ilichhernandez 15-05-2007 17:26:19

He utilizado un query con filter pero me arroja el error que sigue

Project Project1.exe raised exception class EDatabaseError with message 'Arithmetic in filter expressions not supported'.



estoy utilizando el codigo siguiente :

Código Delphi [-]
cadena :=  'Fecha > ' + DatetoStr(DateTimePicker1.date);
showmessage(cadena);
dm.qry_oc.filter :=  cadena;
dm.qry_oc.Filtered := true;

vtdeleon 16-05-2007 01:45:22

Saludos

Te faltó QuotedStr()
Código Delphi [-]
cadena :=  'Fecha > ' + QuotedStr(DatetoStr(DateTimePicker1.date));
Prueba a ver, aunque a veces con querys, filtrar no sirve.

ilichhernandez 16-05-2007 09:08:24

mañana apenas llegue al trabajo, pruebo y les cuento... gracias....


La franja horaria es GMT +2. Ahora son las 04:11:05.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi