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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-03-2007
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Campo Filter de ADOTable

Hola

Tengo una BD en Access y uso Delphi 6

tengo un campo fecha (31/01/2007) y quiero saber como puedo filtrar por el año o por el mes.... a traves del campo Filter de un ADOTable

Saludos y Gracias
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #2  
Antiguo 20-03-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola Sr.Scorpion
Asi:
Código Delphi [-]
ADOQuery1.Open;
ADOQuery1.Filter := 'Fecha = '+DateToStr(Edit1.Text);
ADOQuery1.Filtered := True;
o con un datetimepicker
asi:
Código Delphi [-]
ADOQuery1.Open;
ADOQuery1.Filter := 'Fecha = '+datetimepicker1.date;
ADOQuery1.Filtered := True;

Saludos
Responder Con Cita
  #3  
Antiguo 20-03-2007
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Bueno al parecer me explique mal....

Tengo varios registros y quiero registrarlos todos por un mismo Mes.... y segun la solucion que me das es solo para los registros con la fecha q di al inicio
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #4  
Antiguo 20-03-2007
Nelet Nelet is offline
Miembro
 
Registrado: may 2003
Ubicación: Picassent - Valencia
Posts: 95
Poder: 21
Nelet Va por buen camino
Así creo que valdría:

Código Delphi [-]
ADOQuery1.Open;
ADOQuery1.Filter := 'Month(FECHA)= '+Edit1.Text;
ADOQuery1.Filtered := True;

En el edit deberías poner el año a buscar.
__________________
_____________________________________
And follow me to where the real fun is
Responder Con Cita
  #5  
Antiguo 20-03-2007
Avatar de Onti
Onti Onti is offline
Miembro
 
Registrado: jul 2003
Ubicación: La Paz - Bolivia
Posts: 500
Poder: 21
Onti Va por buen camino
Cita:
Empezado por Nelet

En el edit deberías poner el año a buscar.
No deberia poner el mes?
(ademas asumimos todas la fechas están el mismo año)
Responder Con Cita
  #6  
Antiguo 20-03-2007
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Ya eso lo habia probado con anterioridad y no funciona... no obstante estoy usando un ADOTable, no un ADOQuery

Saludos
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #7  
Antiguo 20-03-2007
Nelet Nelet is offline
Miembro
 
Registrado: may 2003
Ubicación: Picassent - Valencia
Posts: 95
Poder: 21
Nelet Va por buen camino
Cita:
Empezado por Onti
No deberia poner el mes?
(ademas asumimos todas la fechas están el mismo año)
Pues si....pero acabo de comer y llevo una torta monumental. Mea culpa.

Cita:
Empezado por Sr.Escorpion
Ya eso lo habia probado con anterioridad y no funciona... no obstante estoy usando un ADOTable, no un ADOQuery
Bueno...con el ADOTable es igual, incluso tiene más sentido usar el Filter. Pero, ¿por que no te funciona?. ¿Te da algún error?. Quzá dependa del tipo de BD.
__________________
_____________________________________
And follow me to where the real fun is

Última edición por Nelet fecha: 20-03-2007 a las 17:35:04.
Responder Con Cita
  #8  
Antiguo 20-03-2007
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Cita:
Empezado por Nelet
Pues si....pero acabo de comer y llevo una torta monumental. Mea culpa.


Bueno...con el ADOTable es igual, incluso tiene más sentido usar el Filter. Pero, ¿por que no te funciona?. ¿Te da algún error?. Quzá dependa del tipo de BD.
El error que me da dice... Argumentos incorrectos. Fuera del Intervalo permitido o en conflicto con otros...

Código Delphi [-]
ADOTable.Filtered:= False;
ADOTable.Filter:= 'Month(FCompra)= '+ '03';
ADOTable.Filtered:= True;

FCompra es el campo guardado en una BD de Access con el formato de fecha corta Ejemplo: 31/01/2007

Si ya tu hicistes la prueba por favor enviame el codigo.... por lo menos el que me pusistes arriba es un ADOQuery no un ADOTable
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #9  
Antiguo 20-03-2007
Nelet Nelet is offline
Miembro
 
Registrado: may 2003
Ubicación: Picassent - Valencia
Posts: 95
Poder: 21
Nelet Va por buen camino
Código Delphi [-]
ADOTable.Filtered:= False;
ADOTable.Filter:= 'Month(FCompra)= '+ '03';
ADOTable.Filtered:= True;
ese
Código Delphi [-]
+'03';
no me gusta nada.

Prueba así:

Código Delphi [-]
ADOTable.Filtered:= False;
ADOTable.Filter:= 'Month(FCompra)=3';
ADOTable.Filtered:= True;
El mes es de tipo numérico y tu le estás pasando un string.
__________________
_____________________________________
And follow me to where the real fun is

Última edición por Nelet fecha: 20-03-2007 a las 18:02:37.
Responder Con Cita
  #10  
Antiguo 20-03-2007
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
Cita:
Empezado por Sr.Scorpion
El error que me da dice... Argumentos incorrectos. Fuera del Intervalo permitido o en conflicto con otros...
A mi me da ese error por intentar filtrar una tabla que ya viene con "order by" desde la instruccion SQL, puedes usar la propiedad sort del adotable para ordernar el dataset y asi poder usar el filter
Responder Con Cita
  #11  
Antiguo 20-03-2007
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Cita:
Empezado por Nelet
Código Delphi [-]ADOTable.Filtered:= False; ADOTable.Filter:= 'Month(FCompra)= '+ '03'; ADOTable.Filtered:= True;

ese Código Delphi [-]+'03';

no me gusta nada.

Prueba así:

Código Delphi [-]ADOTable.Filtered:= False; ADOTable.Filter:= 'Month(FCompra)=3'; ADOTable.Filtered:= True;

El mes es de tipo numérico y tu le estás pasando un string.
Tampoco funciona... sigue dando el mismo mensaje... al parecer estamos dando vuelta en circulos y tirando piedras... creo que es muy dificil que funcione tu solucion segun lei en la ayuda en la propiedad Filter se pone el CAMPO y despues lo que le quieres asignar por lo que... si le pones Month(FCompra) el va a buscar en la DB un campo llamado asi, a lo mejor en el ADOQuery te funciono porque entiende la funcion Month pero no pasa igual en el ADOTable

Disculpenme si me equivoco... pero creo que es mejor q ustedes mismos hagan la prueban para q vean lo que les digo... rectifiquenme si me equivoco

Gracias
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #12  
Antiguo 20-03-2007
Nelet Nelet is offline
Miembro
 
Registrado: may 2003
Ubicación: Picassent - Valencia
Posts: 95
Poder: 21
Nelet Va por buen camino
Cita:
Empezado por Sr.Escorpion
Disculpenme si me equivoco... pero creo que es mejor q ustedes mismos hagan la prueban para q vean lo que les digo... rectifiquenme si me equivoco
Discúlpame tu a mi. En SQL Server si funciona, pero en Access, no. Me hace falta una siesta.

De todas formas si sabes el año y el mes que estás buscando he probado algo en access que si funciona:
Código Delphi [-]
ADOTable.Filtered:= False;
ADOTable.Filter:= 'FCompra >= FECHA_INICIAL AND FCompra <= FECHA_FINAL';
ADOTable.Filtered:= True;

En access es lo único que se me ocurre que puedas hacer. Las fechas inicial y final deberás calcularlas dado un mes o un año.

Espero te sirva.
__________________
_____________________________________
And follow me to where the real fun is
Responder Con Cita
  #13  
Antiguo 20-03-2007
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Cita:
Empezado por Nelet
Discúlpame tu a mi. En SQL Server si funciona, pero en Access, no. Me hace falta una siesta.

De todas formas si sabes el año y el mes que estás buscando he probado algo en access que si funciona:
Código Delphi [-]ADOTable.Filtered:= False; ADOTable.Filter:= 'FCompra >= FECHA_INICIAL AND FCompra <= FECHA_FINAL'; ADOTable.Filtered:= True;


En access es lo único que se me ocurre que puedas hacer. Las fechas inicial y final deberás calcularlas dado un mes o un año.

Espero te sirva.
Eso es lo que tengo implementado.... pero resulta un poco engorroso hacer eso para cada mes... sin contar que si en febrero poner 01/02/2007 hasta 31/02/2007 da error porque febrero llega hasta 28... y asi pasa con los demas meses que tienen 30 y 31 dias..... en fin resulta bastante codigo para hacer tan pequeña cosa
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #14  
Antiguo 20-03-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Disculpen pero no se donde esta el problema de filtrar dos fechas.
Con dos componentes DateTimePicker:
Código Delphi [-]
 ADOTable1.Open;
 ADOTable1.Filter := 'FCompra >= '+DateToStr(DateTimePicker1.DateTime)+' AND FCompra <= '+DateToStr(DateTimePicker2.DateTime);
 ADOTable1.Filtered := True;
y ya.
Tambien se puede hacer con dos edit igual.
Saludos
Responder Con Cita
  #15  
Antiguo 20-03-2007
Avatar de Ivanzinho
[Ivanzinho] Ivanzinho is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Galicia
Posts: 595
Poder: 20
Ivanzinho Va por buen camino
Cita:
Empezado por Sr.Scorpion
Eso es lo que tengo implementado.... pero resulta un poco engorroso hacer eso para cada mes... sin contar que si en febrero poner 01/02/2007 hasta 31/02/2007 da error porque febrero llega hasta 28... y asi pasa con los demas meses que tienen 30 y 31 dias..... en fin resulta bastante codigo para hacer tan pequeña cosa
Para evitarte eso puedes usar la función :

Código Delphi [-]
function EndOfAMonth ( const Year, Month : Word ) : TDateTime

Un saúdo
__________________
Si no lees esto no vivirás tranquilo
Non lle poñades chatas â obra namentras non se remata. O que pense que vai mal que traballe n’ela; hai sitio para todos. (Castelao)
Responder Con Cita
  #16  
Antiguo 20-03-2007
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Cita:
Empezado por Caral
Hola
Disculpen pero no se donde esta el problema de filtrar dos fechas.
Con dos componentes DateTimePicker:
Código Delphi [-] ADOTable1.Open; ADOTable1.Filter := 'FCompra >= '+DateToStr(DateTimePicker1.DateTime)+' AND FCompra <= '+DateToStr(DateTimePicker2.DateTime); ADOTable1.Filtered := True;

y ya.
Tambien se puede hacer con dos edit igual.
Saludos
el problema esta en poner dos componente para filtrar mientras que un combobox escoge el mes que quiera y me filtra
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #17  
Antiguo 20-03-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Bueno Sr.Scorpion
Segun tu planteamiento, tienes en un combobox los meses.
Enero
Febrero
etc.
y quieres que te filtre de esos meses.
Es correcto?
Yo lo que haria seria que al grabar la informacion en la tabla indicara en un campo el mes que quiero, asi lo filtraria facilmente, no se si me explico.
Saludos

Última edición por Caral fecha: 20-03-2007 a las 19:36:22. Razón: arreglar
Responder Con Cita
  #18  
Antiguo 20-03-2007
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 20
Sr.Scorpion Va por buen camino
Cita:
Empezado por Caral
Bueno Sr.Scorpion
Segun tu planteamiento, tienes en un combobox los meses.
Enero
Febrero
etc.
y quieres que te filtre de esos meses.
Es correcto?
Yo lo que haria seria que al grabar la informacion en la tabla indicara en un campo el mes que quiero, asi lo filtraria facilmente, no se si me explico.
Saludos
Eso traeria consigo replantear todo un procedimiento en el llenado de la tabla... y seria como darse por vencido ante una dificultad. Por lo que creo mas sensato seguir trabajando en el filtrado antes de claudicar e ir por otra solucion....
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 vroa74 Conexión con bases de datos 3 06-03-2007 23:51:18
adotable ordenado por un campo leorene Conexión con bases de datos 2 13-02-2007 02:00:16
Locate o Filter jre740824 SQL 3 17-11-2006 12:17:35
Uso de filter CONY Conexión con bases de datos 1 02-08-2006 23:48:23
Borrar un campo con AdoTable Sotrono Conexión con bases de datos 4 07-11-2004 23:54:35


La franja horaria es GMT +2. Ahora son las 13:34:31.


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