Filtro de fechas por año

Dudas sobre código
magdacardoner
Nivel 3
Mensajes: 61
Registrado: Mié Nov 29, 2017 2:42 pm

Filtro de fechas por año

Mensajepor magdacardoner » Sab Sep 01, 2018 8:11 pm

Buenas tardes,

Quisiera saber cómo es el código para abrir un informe filtrando las fechas de alta por el año. Me explico:
He hecho un formulario con un cuadro combinado en el que salen todos los años (bebe de una tabla auxiliar y el campo se llama Any) para que, al escoger un año, se abra un informe con todos los socios cuya alta es de dicho año (el campo se llama Alta1.
El código que he puesto en "al cambiar" es el siguiente:

Código: Seleccionar todo

Private Sub txtAny_Change()
'Creamos la variable y le asignamos el valor del combo
Dim vAny As Variant
Dim miFiltro As String
'Si el combo está vacío sale del proceso
If IsNull(vAny) Then Exit Sub
'Cogemos el valor que hayamos seleccionado como filtro
vAny = Nz(Me.txtAny.Value, "")
'Inicilizamos el filtro
miFiltro = ""
'Creamos el filtro
If vAny <> "" Then
miFiltro = miFiltro & " [Alta1]=" & vAny
End If
'Abrimos el Informe en modo Informe
DoCmd.OpenReport "InfAltesBaixesSocis", acViewReport, , miFiltro
End Sub

En una consulta pondría, en criterios: Como "*2014" pero no sé cómo hacerlo con un código...
¿Me podéis ayudar?
Gracias!
Magda

Avatar de Usuario
Sveinbjorn
Moderador
Mensajes: 989
Registrado: Sab Oct 24, 2015 10:12 pm

Re: Filtro de fechas por año

Mensajepor Sveinbjorn » Sab Sep 01, 2018 8:36 pm

Hola Magda,

si lo quieres hacer con LIKE, que puedes, sería:

Código: Seleccionar todo

miFiltro = miFiltro & " [Alta1] LIKE *" & vAny


pero yo habría usado la función Year() para sacar el año de la fecha y compararlo con el del combo:

Código: Seleccionar todo

miFiltro = miFiltro & " Year([Alta1])=" & vAny


Por otro lado, yo el código lo pondría en el evento "Después de actualizar" y no en "Al cambiar".

Un saludo.
Sveinbjorn El Rojo

magdacardoner
Nivel 3
Mensajes: 61
Registrado: Mié Nov 29, 2017 2:42 pm

Re: Filtro de fechas por año

Mensajepor magdacardoner » Sab Sep 01, 2018 8:53 pm

Gracias por responder tan rápido!
Supongo que hay algún otro código que no está correcto porque si uso la función YEAR se abre el informe pero no me saca ningún dato y si uso el otro me da error de sintaxis (falta operador)...

Avatar de Usuario
Sveinbjorn
Moderador
Mensajes: 989
Registrado: Sab Oct 24, 2015 10:12 pm

Re: Filtro de fechas por año

Mensajepor Sveinbjorn » Sab Sep 01, 2018 9:37 pm

Acabo de hacer una prueba rápida, y usando la opción con Year() no te debería dar error.
Con LIKE tienes que cambiar una cosilla y ponerlo así (como si fuera un campo de texto):

Código: Seleccionar todo

miFiltro = miFiltro & " [Alta1] LIKE '*" & vAny & "'"
Sveinbjorn El Rojo

magdacardoner
Nivel 3
Mensajes: 61
Registrado: Mié Nov 29, 2017 2:42 pm

Re: Filtro de fechas por año

Mensajepor magdacardoner » Lun Sep 03, 2018 12:01 pm

Gracias, ahora con LIKE me sale pero me saca las fechas de 3 años antes... Por ejemplo, si en el combo selecciono 2018, en el informe me salen todas las altas del 2015. No encuentro qué puede ser...

Avatar de Usuario
Sveinbjorn
Moderador
Mensajes: 989
Registrado: Sab Oct 24, 2015 10:12 pm

Re: Filtro de fechas por año

Mensajepor Sveinbjorn » Lun Sep 03, 2018 1:30 pm

Raro, raro... :shock:

Pues no sé qué decirte, con todas las pruebas que hice con LIKE siempre me filtró bien...

Si quieres sube una copia de tu BD y le echo un vistazo...
Sveinbjorn El Rojo

magdacardoner
Nivel 3
Mensajes: 61
Registrado: Mié Nov 29, 2017 2:42 pm

Re: Filtro de fechas por año

Mensajepor magdacardoner » Lun Sep 03, 2018 4:02 pm

Vale, la he subido con datos ficticios en http://www.filebig.net/files/VFzEJeCRhP
Es la última pestanya del menú: "Altes per anys"
Gracias por tu ayuda,
Magda

Avatar de Usuario
Sveinbjorn
Moderador
Mensajes: 989
Registrado: Sab Oct 24, 2015 10:12 pm

Re: Filtro de fechas por año

Mensajepor Sveinbjorn » Lun Sep 03, 2018 7:20 pm

Ya he visto el problema: tu cuadro combinado trabaja (su columna dependiente) con el ID de la tabla AuxAnys y con con el campo Any.

La solución es muy sencilla (te planteo dos, y tu eliges la que más te guste):

1º/ Sin cambiar nada en el código que ya tienes: modifica la propiedad columna dependiente en la pestaña Datos de tu cuadro combinado cboAny y ponle 2 en vez de 1.

2º/ Sin modificar el diseño del cuadro: cambia en el código vAny = Nz(Me.cboAny.Value, "") por vAny = Nz(Me.cboAny.Column(1), "")

Con cualquiera de los cambios si vuelves a probar la opción con Year(), verás que te funciona, al igual que ahora la del LIKE te devolverá lo correcto.
Sveinbjorn El Rojo

magdacardoner
Nivel 3
Mensajes: 61
Registrado: Mié Nov 29, 2017 2:42 pm

Re: Filtro de fechas por año

Mensajepor magdacardoner » Lun Sep 03, 2018 10:18 pm

¡Ahora sí! ¡Perfecto, muchas gracias!
Magda


Volver a “Código VBA”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado