PDA

Ver la Versión Completa : filtrar por fechas y por un campo mas


mainau
29-03-2004, 15:05:24
Hola de nuevo y a ver si soy capaz de explicarme :
tengo una tabla , dbf, que quiero filtrar por fechas y por un campo (indexado) mas el formato es :
codempl n 4 0
fectrab d 8 0
liquido n 7 2
anticipo n 7 2

el filtro que he hecho es el siguiente :
Table1.Filter := 'codempl='+ quotedstr(dbedit1.text) and 'Fectrab >= ' + QuotedStr(FormatDateTime('mm/dd/yyyy', datetimepicker1.date)) +
' and Fectrab <= ' + QuotedStr(FormatDateTime('mm/dd/yyyy', datetimepicker2.Date));
y el error que me da es que el operador no aplicable this operand tipe ????:mad:

es que no se puede , lo dudo pero como soy cortito a lo mejor hago algo mal
si podeis iluminarme os lo agradeceria de mientras me comeré el coco un poquito más , GRACIAS MIL:)

marcoszorrilla
29-03-2004, 15:53:18
Para filtros cambia el formato de fecha, el que pones te irá bien con SQL

Table1.Filter := 'codempl='+ quotedstr(dbedit1.text) and 'Fectrab >= '
+ QuotedStr(FormatDateTime('dd/mm/yyyy', datetimepicker1.date)) +

' and Fectrab <= ' + QuotedStr(FormatDateTime('dd/mm/yyyy',
datetimepicker2.Date));

Un Saludo.

Nuria
29-03-2004, 16:21:14
Hola!



Table1.Filter := 'codempl='+ quotedstr(dbedit1.text) + ' and Fectrab between ' +
QuotedStr(FormatDateTime('dd/mm/yyyy', datetimepicker1.date)) + ' and ' +
QuotedStr(FormatDateTime('dd/mm/yyyy', datetimepicker2.Date));

Es lo mismo que te ha dicho marcos, pero me gusta más utilizar between, cuestión de gustos... :rolleyes:

Tenías un 'and' fuera de las comillas, no sé si te habías dado cuenta.

Saludos!

marcoszorrilla
29-03-2004, 17:06:13
Bueno en realidad yo solamente he cambiado el formato de la fecha.

Un Saludo.

mainau
29-03-2004, 20:20:02
en rato os digo algo

mainau
29-03-2004, 20:24:30
Filter expression incorectly terminated ???????:(
lo he copiado literalmente voy repasarlo a ver si he hecho algo mal , de todas maneras muchismas gracias por vuestro tiempo y atención.
Asi si que se puede aprender.:D

mainau
29-03-2004, 20:41:43
NO SABEIS LO CONTENTO QUE ME HE PUESTO LLEVO 3 DIAS LIADO CON ESTO.
Si ahora va de lujo , no sabeis lo que me alivia , necesito aprender mucho de esto para ganarme la vida y esto no se aprende en los libros y tengo varios y por cierto carisimos.:) :D :D :D :D ¡¡¡
GRACIAS A LOS DOS .

JamesBond_Mx
31-03-2004, 17:46:44
A ver, si yo quiero filtrar por dos fechas exactas por ejemplo entre el 1 de enero del 2004 y el 31 de enero del 2004, el filtro sería:

Table1.Fliter:='Fecha_Prog<=01/01/2004' and 'Fecha_Prog>=31/01/2004';

Estoy bien???, si es así por que no funciona??? me manda Varios errores,

Si pongo solo esto:
Table1.Fliter:='Fecha_Prog<=01/01/2004'

Me dice que operadores aritmeticos no estan permitidos y si lo pongo con las dos opciones me dice el operador no es aplicable a este tipo de operando, supongo que habla del and...

Que opinan.

vic_ia
31-03-2004, 21:14:09
Hola Sr. Bond....

Ciertamente como has escrito la sentencia del filtro no funciona, el problema con la escritura de tu sentencia es que generas una cadena simple, mientras que (si te fijas bien en los mensajes previos de Nuria y Marcoszorrilla) ellos han utilizado la función QuotedStr para que la fecha que utilizan como filtro este enmarcada por doble comilla simple (''). Espero que esta observacion te ayude.

JamesBond_Mx
01-04-2004, 16:23:16
Si que me sirvió ya solucioné el problema, muchas gracias.