Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Filtrar por fechas anteriores en Access...

Estas en el tema de Filtrar por fechas anteriores en Access... en el foro de Bases de Datos General en Foros del Web. Hola, a ver si me pueden echar un cale con esto por aquí [^] Tengo unas tablas relacionadas, en una de ellas tengo un campo ...
  #1 (permalink)  
Antiguo 18/11/2007, 11:52
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 3 meses
Puntos: 0
Pregunta Filtrar por fechas anteriores en Access...

Hola, a ver si me pueden echar un cale con esto por aquí [^]
Tengo unas tablas relacionadas, en una de ellas tengo un campo con la fecha de un evento, el tema es que quiero hacer consultas en donde solo extraiga los campos desde la fecha que le marque hacia atrás, he probado varias fórmulas y no me funciona... ¿me dan alguna pista de como hacerlo?

SaLu2
  #2 (permalink)  
Antiguo 19/11/2007, 06:20
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 9 meses
Puntos: 8
Re: Filtrar por fechas anteriores en Access...

Prueba con ésto (ojo con el formato= mes/dia/año)

SELECT * FROM tabla WHERE fecha<=#mm/dd/aaaa#
__________________
Kelpie
  #3 (permalink)  
Antiguo 19/11/2007, 08:48
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Filtrar por fechas anteriores en Access...

¿En la consulta siempre debe estar en ese formato? lo digo porque como es lógico las guardo y las rescato así "DD/MM/YYY"

De echo lo tengo de este modo y los resultados son un poco raros, filtra solo una parte, en cambio si le cambio el signo (<) por (>) y le digo que filtre los mayores que Fechaevent si lo hace bien aparentemente.

Código:
 
diaH = day(Fechaevent) 
mesH = month(Fechaevent)
anyoH = year(Fechaevent)

"la variable Fechaevent la rescato de otra parte del código más arriba, corresponde con una fecha que yo selecciono en un desplegable."

SELECT SE.Socio, S.Nombre, S.DNI, S.TIT, EU.Fecha 
FROM Socios AS S 
INNER JOIN (SociosEvent AS SE LEFT JOIN vw_FechasEventos AS EU ON SE.Socio=EU.Socio) 
ON SE.socio=S.socio 
WHERE SE.IdSalidas="&IdSalidas&" 
AND day(EU.Fecha)<'"&diaH&"' 
AND month(EU.Fecha)<='"&mesH&"' 
AND year(EU.Fecha)<='"&anyoH&"' 
ORDER BY EU.Fecha ASC

Última edición por Uefor; 19/11/2007 a las 09:55
  #4 (permalink)  
Antiguo 19/11/2007, 10:36
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 9 meses
Puntos: 8
Re: Filtrar por fechas anteriores en Access...

Estás comparando fechas de una manera rara. Suponiendo que FechaEvent es (dd/mm/yyyy) 23/10/2007, si la fecha del registro es 25/09/2007 no te lo selccionará ya que, aunque la fecha en sí es menor, el día es mayor, y en tu consulta una condición para que se seleccione el registro es que el día sea menor:

...
AND day(EU.Fecha)<'"&diaH&"'
...

La consulta para comparar fechas por partes es bastante más larga y mucho más liosa, a la vez que inutil, dado que se pueden comparar como campo.
__________________
Kelpie
  #5 (permalink)  
Antiguo 19/11/2007, 11:54
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Filtrar por fechas anteriores en Access...

Lo he puesto así porque comparando el campo EU.Fecha con Fechaevent directamente el resultado es o bien todos los registros o ninguno según el signo (< ó >), pero no me hace el filtrado esperado... pero en un principio si que lo tenía de ese modo.
  #6 (permalink)  
Antiguo 20/11/2007, 01:30
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Filtrar por fechas anteriores en Access...

Pues al final lo he vuelto a poner como me has dicho tu, pero lo que ocurre es que dependiendo de si la fecha la puede interpretar de este modo MM/DD/YYYY como puede ser 10-11-07 lo hace y le da la vuelta leyendola así 11-10-07 y si no puede interpretarla de ese modo porque es una fecha como esta 25-11-07 lo hace del modo correcto DD/MM/YYYY

¿Que estoy haciendo mal o como puedo corregir esto?
Gracias por el interés Kelpie

Última edición por Uefor; 20/11/2007 a las 02:07
  #7 (permalink)  
Antiguo 20/11/2007, 05:02
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Re: Filtrar por fechas anteriores en Access...

En principio da igual que formatos uses para mostrar fechas, access intenamente trabaj con el formato americano, por eso, para evitar errores, yo siempre doy formato a la fecha (al americano) cuando se trata de comparar. Por ejemplo:

"SELECT * FROM tabla WHERE fecha<=#" & format(Fecha,"mm/dd/yyyy") & "#"

o

SELECT CampoFecha
FROM Tabla
WHERE CampoFecha<Format(Date(),"mm/dd/yyyy")

Un saludo
  #8 (permalink)  
Antiguo 20/11/2007, 09:34
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Filtrar por fechas anteriores en Access...

Esto... #" & format(Fecha,"mm/dd/yyyy") & "#
me da un error, dice que... Type mismatch: 'Format'
y si le pongo aquello de formatdatetime... Type mismatch: '[string: "MM/DD/YYYY"]'
  #9 (permalink)  
Antiguo 20/11/2007, 09:36
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Re: Filtrar por fechas anteriores en Access...

Donde estas usando la funcion format??

un saludo
  #10 (permalink)  
Antiguo 20/11/2007, 10:09
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 9 meses
Puntos: 8
Re: Filtrar por fechas anteriores en Access...

¿No te funciona esto?:

diaH = day(Fechaevent)
mesH = month(Fechaevent)
anyoH = year(Fechaevent)

fechaStr=trim(cstr(mesH))+"/"+trim(cstr(diaH))+"/"+trim(cstr(anyoH))

"la variable Fechaevent la rescato de otra parte del código más arriba, corresponde con una fecha que yo selecciono en un desplegable."

SELECT SE.Socio, S.Nombre, S.DNI, S.TIT, EU.Fecha
FROM Socios AS S
INNER JOIN (SociosEvent AS SE LEFT JOIN vw_FechasEventos AS EU ON SE.Socio=EU.Socio)
ON SE.socio=S.socio
WHERE SE.IdSalidas="&IdSalidas&"
AND EU.fecha<=#"&fechaStr&"#
ORDER BY EU.Fecha ASC

Y por otra parte, tu problema está en el código VB, no en SQL, que es de lo que trata este foro. A Brujonic no le va a gustar este tema porque debería estar en el foro de VB...
__________________
Kelpie

Última edición por Kelpie; 20/11/2007 a las 13:10
  #11 (permalink)  
Antiguo 20/11/2007, 12:55
Avatar de Uefor  
Fecha de Ingreso: agosto-2006
Ubicación: Murcia
Mensajes: 136
Antigüedad: 18 años, 3 meses
Puntos: 0
De acuerdo Re: Filtrar por fechas anteriores en Access...

Brujonic no debe enfadarse porque en el fondo si hay SQL implicado en el problema
En cualquier caso ya está resuelto con tu último post muchas gracias Kelpie.
SaLu2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:00.