![]() |
Problemas con filter
:D Estoy usando una base de datos local, y necesito poder filtrar un intervalo de fecha estoy usando las siguientes sentencias:
Form1.table1.filter := 'Fecha >= '+DateTimeToStr(DateTimePicker1.Date)+'And Fecha <= '+DateTimeToStr(DateTimePicker2.Date)+''; = >no funciona con:= con + 'Fecha >= '; con:= con + DateToStr(DateTimePicker1.Date); con:= con + ' And '; con:= con + ' Fecha <= '; con:= con + DateToStr(DateTimePicker2.Date); Form1.table1.filter :=con; = >no funciona Form1.table1.filter := 'Fecha >= ''06/02/2007''And Fecha <= ''07/02/2007'''; = > si funciona Form1.table1.filter := 'Fecha >= '''+DateTimeToStr(DateTimePicker1.Date) + ''''+'And'+'Fecha <= ''' + DateTimeToStr(DateTimePicker2.Date) + ''''; = >no funciona todo con la siguiente linea Form1.table1.filtered := true; :D Tambien me gustaria saber como puedo obtener la fecha del sistema he buscado y no se he visto fecha y hora solo necesito la fecha. |
Intentalo asi:
Para lo de la fecha solo debes usar la función Date |
Cita:
Los filtros por alguna razon que desconozco, se tornan un poco lentos, sobre todo cuando la tabla es muy grande, queda a veces mejor usando un query y una sentencia sql. No digo que el filtro no sirva o use, digo que en ciertas ocasiones sobre todo cuando se usan varias tablas a la vez, es mas limpio con un query. Creo que el table trae todo la tabla y luego hace el filtro, el query solo trae el dato que se le pide ahorrando tiempo. Por favor corrijanme. Saludos |
Hola jhonny
No se como hice para que se citara tu intervencion, no fue mi intencion, pero de todos modos me gustaria saber como se hace, ya que esta salio asi por casualidad.:D Que teclas aprete? Saludos |
Cita:
Y si no me hice entender con lo que acabo de decirte pues mira el botoncito que hay en el editor como con una nube de dialogo (como en las caricaturas). Solo es cuestión de seleccionar el texto que quieres citar y presionar ese botón. Ahh, y si no te muestra la barra de herramientas verifica de que tienes activado el editor WYSIWYG en tu perfil de usuario. |
Gracias jhonny
Tantas veces haciendo cosas y esta me pillo de sorpresa.:D Saludos |
Discupen ya habia probado lo que me han dicho en sus comentarios.
Les envio un la captura de la imagenes en cada una de la lineas qye me enviaro, no se pudo hacer la consulta satisfactoriamente. Form1.table1.filter := 'Fecha >= '''+DateToStr(DateTimePicker1.Date) + ''''+'And'+'Fecha <= ''' + DateToStr(DateTimePicker2.Date) + ''''; =sistema.jpg Form1.table1.filter := 'Fecha >= "'+DateToStr(DateTimePicker1.Date)+'"And Fecha <= "'+DateToStr(DateTimePicker2.Date)+'"'; =sistema2.jpg |
Para que no te enredes con los ''', usa la funcion QuotedStr
Ahora si no te funciona asi, checa el formato de Fecha y hora, quizas el DateToStr te lo devuelva en formato mes,dia año, y por eso no te lo filtra, y no te das cuenta por que son fechas validas. Lo que hago usualmente es poner en el dpr estas dos lineas
para que no se tomen las que trae por default la instalacion de windows. |
Hello ya hice esta prueba de esta sintaxis si funciona:
Form1.table1.filter := 'Fecha = ''' + DateToStr(DateTimePicker1.Date) + ''''; Esta sintasixis no manca eeror de formato pues da fecha y hora. Form1.table1.filter := 'Fecha >= '+QuotedStr(DateTimeToStr(DateTimePicker1.Date))+' And Fecha <= '+QuotedStr(DateTimeToStr(DateTimePicker2.Date)); |
Coloca tambien los respectivos parentesis asi:
|
Cita:
¿si tira error? Con la última dice que funciones arismeticas no son compatibles con el filtrado de tablas. ¿Lo dice por los "/"? ¿por qué se soluciona con esas comas demás? Saludos |
por que la propiedad filtro no es mas que una cadena que despues es interpretada para evaluar la condicion que tu hayas definido, por ejemplo
esto : es equivalente a esto otro, lo cual puede ser interpretado erroneamente como una operacion aritmetica
en cambio si le agregas las comillas, seria como si asignaras algo parecido a esto lo cual ya podra ser interpretado correctamente como una fecha. Esto ya es correcto, pero para no enredarme con tantas comillas, prefiero usar la funcion QuotedStr de esta forma :
|
...y con Query
Si quisiera realizar un filtro parecido a este usando un Query... datos que luego se puedan eliminar usando otro Query , como seria...???
Si dicen que con la tabla es lento, existe una forma de acelerarlo...??? :confused: |
Los Ttable y sus derivados son lentos porque te traen tooodos los registros a parte de otras cosillas. Lo mejor es utilizar los TQuery.
Para filtrar es lo mas facil, un ejemplo..: Suerte |
Amigo, vtdeleon, permite que te corriga un pequeño gazapo, la funcion deberia ser StrTodate, no DateToStr.
|
Oops, Si:D. Gracias jacanche.
Lo corregiré |
| La franja horaria es GMT +2. Ahora son las 20:31:00. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi