ACCESS Filtrar subformulario entre dos meses de distinto año

tengo un formulario con 4 combobox (mes inicio, año inicio, mes fin, año fin) para filtrar por fecha un subformulario. Para hacerlo establecí los criterios "entre [mes inicio] y [mes fin]" y "entre [año inicio] y [año fin]" en la respectiva consulta.

Mi problema aparece cuando, por ejemplo, quiero filtrar los valores entre 06/2015 y 02/2016 me dá como resultado los valores entre los meses 02 y 06 del 2015, y los mismos meses del 2016. Me gustaría saber si existe alguna forma de "jerarquizar" los meses y años para poder aplicar el filtro correctamente.

2

2 respuestas

Respuesta
1

Donivans: A mi modo de ver hay varios modos.

Lo que yo haría es filtrar entre Fechas, pero supongo que Tendrás tus razones para no hacerlo así. Sería solo dos TextBox y Para filtrar la Fecha, si quieres por código construyes un Filtro que se por ejemplo >> Un Botón que se llame BtnFiltra

Private Sub BtnFiltra_Click()
Dim FiltroFechas As String
FiltroFechas = "CampoFecha BETWEEN #" & Format(Nz(Me.DesdeFecha, #1/1/1900#), "mm-dd-yyyy") & _
                    "# AND #" & Format(Nz(Me.HastaFecha, #12/31/9999#), "mm-dd-yyyy") & "#"
'Siendo DesdeFecha un TextBox y Hasta Fecha el otro
'CampoFecha es el Nombre del campo que tienes la Fecha
Me.Filter = FiltroFechas
Me.FilterOn = True
End Sub

Del modo que pretendes hacerlo un modo es juntar el Año y el mes, mas o menos así.

Una consulta con los Campos que necesites y añades uno que sea AñoMes

Suponiendo que tu Campo de Tabla se llame FechaBusco

AñoMes: CLargo(Año([FechaBusco] & Format(Mes([FechaBusco];"00"))

Tendrías valores tales como 201506 y 201602 y Filtras por ese Campo. Meses correlativos

Ya me contarás como te ha ido. Saludos >> Jacinto

Si filtras por Formulario, en el Código de las Fechas, has de poner

Me!NombreDeTuSubFormulario.Filter = FiltroFechas

Me!NombreDeTuSubFormulario.FilterOn = True

Y para quitar el filtro >>

Puede ser un Botón Con

Me!NombreDeTuSubFormulario.Filter = ""

Me!NombreDeTuSubFormulario.FilterOn = False

Saludos >> Jacinto

¡Gracias! Decidí utilizar la segunda alternativa que me pasaste, tenía pensado hacer eso pero no sabía como darle el formato "mm" a los meses. Lo que no use fue la función CLargo, ya que en el combobox no podía utilizar select distinct (no sé por qué). De todas formas muchisimas gracias por tu ayuda y por la velocidad de respuesta. 

Respuesta
1

Una alternativa a la propuesta de Jacinto:

1/ Elimina los criterios de tu consulta.

2/ Añade un nuevo campo (que puedes ocultar) con esta expresión:

AñoMes: Año([Fecha]) & Format(Mes([Fecha]);"00")

(He supuesto que tu campo de tipo fecha por el que vas a filtrar se llama "Fecha", tu pon el nombre del tuyo)

3/ Como criterio de tu nuevo campo pon:

Entre [Formularios]![FFiltro]![cboAnoIni] & "" & [Formularios]![FFiltro]![cboMesIni] Y [Formularios]![FFiltro]![cboAnoFin] & "" & [FFiltro]![Formulario1]![cboMesFin]

(Aquí he supùesto que tu formulario donde están los cuadros combinados se llama FFiltro, y los cuadros combinados: cboMesIni, cboMesFin, cboAnoIni y cboAnoFin)

Un saludo.


Un nuevo foro de access, visítanos: http://nksvaccessolutions.com/Foro/ 

¡Ah!, me olvidaba, para que te funcione, los cuadros combinados de los meses tienen que mostrar los números de mes con dos cifras siempre: 01,02...

Hola! Gracias por la velocidad en la respuesta, pero la verdad no me funcionó. Cuando aplico el filtro me combina el menor mes con el menor año, y el mayor mes con el mayor año. Por ejemplo, si filtro datos entre 09/2014 y 02/2015 me aparecen los datos entre el 02/2014 y 09/2015 (ya chequeé haber escrito el criterio correctamente). De todas formas agradezco tu ayuda. 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas