Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-02-2007
Avatar de vroa74
vroa74 vroa74 is offline
Miembro
 
Registrado: jul 2006
Posts: 254
Poder: 18
vroa74 Va por buen camino
Question Problemas con filter

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;

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.
Responder Con Cita
  #2  
Antiguo 14-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Intentalo asi:

Código Delphi [-]
 
Form1.table1.filter := 'Fecha >= "'+DateTimeToStr(DateTimePicker1.Date)+'"And Fecha <= "'+DateTimeToStr(DateTimePicker2.Date)+'"';

Para lo de la fecha solo debes usar la función Date
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 14-02-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Cita:
Empezado por jhonny
Intentalo asi:

Código Delphi [-]
 
Form1.table1.filter := 'Fecha >= "'+DateTimeToStr(DateTimePicker1.Date)+'"And Fecha <= "'+DateTimeToStr(DateTimePicker2.Date)+'"';

Para lo de la fecha solo debes usar la función Date
Hola
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
Responder Con Cita
  #4  
Antiguo 14-02-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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.
Que teclas aprete?
Saludos
Responder Con Cita
  #5  
Antiguo 14-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por caral
pero de todos modos me gustaria saber como se hace, ya que esta salio asi por casualidad
Bueno pues si quieres saber como lo hiciste , solo es cuestion de que le des editar a tu post y veas que fue lo que escribio el editor al rededor de lo que haz citado.

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.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 14-02-2007 a las 21:20:23.
Responder Con Cita
  #6  
Antiguo 14-02-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Gracias jhonny
Tantas veces haciendo cosas y esta me pillo de sorpresa.
Saludos
Responder Con Cita
  #7  
Antiguo 14-02-2007
Avatar de vroa74
vroa74 vroa74 is offline
Miembro
 
Registrado: jul 2006
Posts: 254
Poder: 18
vroa74 Va por buen camino
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
Responder Con Cita
  #8  
Antiguo 14-02-2007
jacanche jacanche is offline
Miembro
 
Registrado: may 2003
Ubicación: Campeche,Campeche,Mexico
Posts: 137
Poder: 21
jacanche Va por buen camino
Para que no te enredes con los ''', usa la funcion QuotedStr

Código Delphi [-]
Form1.table1.filter := 'Fecha >= '+QuotedStr(DateTimeToStr(DateTimePicker1.Date))+' And Fecha <= '+QuotedStr(DateTimeToStr(DateTimePicker2.Date));

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

Código Delphi [-]
  
ShortDateFormat :='dd/mm/yyyy';
DateSeparator :='/';

para que no se tomen las que trae por default la instalacion de windows.
__________________
Saludos

Alfredo
Responder Con Cita
  #9  
Antiguo 14-02-2007
Avatar de vroa74
vroa74 vroa74 is offline
Miembro
 
Registrado: jul 2006
Posts: 254
Poder: 18
vroa74 Va por buen camino
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));
Responder Con Cita
  #10  
Antiguo 14-02-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Coloca tambien los respectivos parentesis asi:

Código Delphi [-]
Form1.table1.filter := '(Fecha >= '+QuotedStr(DateTimeToStr(DateTimePicker1.Date))+') And (Fecha <= '+QuotedStr(DateTimeToStr(DateTimePicker2.Date))+')';
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #11  
Antiguo 25-02-2007
jpcancino jpcancino is offline
Miembro
 
Registrado: ene 2004
Posts: 47
Poder: 0
jpcancino Va por buen camino
Cita:
Empezado por vroa74
Hello ya hice esta prueba de esta sintaxis si funciona:

Form1.table1.filter := 'Fecha = ''' + DateToStr(DateTimePicker1.Date) + '''';
Puedes explicar pq esa sintaxis con muchas comas funciona y esta sintaxis:

Código Delphi [-]
Form1.table1.filter := 'Fecha =  ' + DateToStr(DateTimePicker1.Date);
¿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
Responder Con Cita
  #12  
Antiguo 25-02-2007
jacanche jacanche is offline
Miembro
 
Registrado: may 2003
Ubicación: Campeche,Campeche,Mexico
Posts: 137
Poder: 21
jacanche Va por buen camino
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 :
Código Delphi [-]
Form1.table1.filter := 'Fecha =  ' + DateToStr(DateTimePicker1.Date)
es equivalente a esto otro, lo cual puede ser interpretado erroneamente como una operacion aritmetica
Código Delphi [-]
Form1.table1.filter := 'Fecha =25/02/2007'


en cambio si le agregas las comillas, seria como si asignaras algo parecido a esto

Código Delphi [-]
Form1.table1.filter := 'Fecha =''25/02/2007'''
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 :
Código Delphi [-]
Form1.table1.filter := 'Fecha = ' + QuotedStr(DateToStr(DateTimePicker1.Date));
__________________
Saludos

Alfredo
Responder Con Cita
  #13  
Antiguo 26-06-2007
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 18
felipe88 Va por buen camino
...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...???
Responder Con Cita
  #14  
Antiguo 27-06-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
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..:
Código Delphi [-]
begin
  With Query1 do
  begin
    Close;//Cerrams el Query
    Sql.Text:='Select Campo1, campo2 fron Tabla1 Where Campo1=:Fecha1';
    //Se Asigna la sentencia donde se filtrara por fecha
    ParamByName('Fecha1').AsDate:=StrtoDate(edit1.text);//O utilizar un DateTimePicker qeu es mejor.
    //Aqui asingamos el valor del parametro para filtrarlo
    Open;//Listo! Abrimos la consultas
  end;
end;
{Ya veras los datos filtrados por el valor que hayas dado en el Edit o DateTiemPicker utilizado}
Suerte
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!

Última edición por vtdeleon fecha: 27-06-2007 a las 04:55:34.
Responder Con Cita
  #15  
Antiguo 27-06-2007
jacanche jacanche is offline
Miembro
 
Registrado: may 2003
Ubicación: Campeche,Campeche,Mexico
Posts: 137
Poder: 21
jacanche Va por buen camino
Amigo, vtdeleon, permite que te corriga un pequeño gazapo, la funcion deberia ser StrTodate, no DateToStr.
__________________
Saludos

Alfredo
Responder Con Cita
  #16  
Antiguo 27-06-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Oops, Si. Gracias jacanche.

Lo corregiré
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Filter vs consulta SQL nachito_tuc SQL 6 25-12-2006 00:34:28
Locate o Filter jre740824 SQL 3 17-11-2006 11:17:35
Uso de filter CONY Conexión con bases de datos 1 02-08-2006 22:48:23
Filter en IBQuery StartKill Firebird e Interbase 1 27-08-2005 06:51:06
Duda con filter... superhopi OOP 1 21-05-2003 10:00:04


La franja horaria es GMT +2. Ahora son las 13:52:35.


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