Access. Consultas con fechas. Tengo una tabla con varios campos de fecha y quiero filtrar por meses todos los registros

Tengo una tabla que tiene 10 campos de fecha. Necesito hacer consultas mensuales para saber que registros de todos esos campos están dentro del mes que quiero consultar. Igualmente me gustaría que se pudieran contar el número de registros

Lo he intentado con parámetros pero me pide que lo escriba en todos los campos.

¿Me puede echar una mano?

1 respuesta

Respuesta
2

No sé si lo he entendido bien, aunque honestamente, 10 campos fecha en un mismo registro me parece mucho pero... Si tengo el formulario(solo le he puesto 6 fechas)

En el combinado voy a elegir el mes de Marzo

Cuando lo elijo

Como en el primer registro hay al menos un campo con fecha de Marzo me lo muestra. El código del evento Después de actualizar del combinado, al que he llamado Mes es

Private Sub Mes_AfterUpdate()
Me.RecordSource = "select * from clientes where month([fecha1])=" & Me.Mes & " or month([fecha2])=" & Me.Mes & " or month([fecha3])=" & Me.Mes & " or " _
& "month([fecha4])=" & Me.Mes & " or month([fecha5])=" & Me.Mes & " or month([fecha6])=" & Me.Mes & ""
Texto18 = Me.Recordset.RecordCount & " registros"
End Sub

Por cierto, en el ejemplo, el combinado Mes tiene dos columnas, una es

Mes en Número y otra MesL:format([fecha6];"mmmm") pero la columna dependiente es la primera

Con lo que podrías usar el formato condicional de forma que una vez elijas el mes te lo presente como

Sólo sería poner en cada cuadro de texto

La expresión es     Mes([Fecha5])=Formularios!clientes!mes y en los demás.

Buenos días y primeramente agradecer tu ayuda.

La tabla que tengo es más o menos esta. Necesito saber cuantos "M" hay en el mes de enero ,por ejemplo.

Lo he intentado con una consulta con parámetros que me preguntase el mes pero tengo que escribir el parámetro en todos los campos ¿es así? y por lo tanto me lo pide 7 veces o tantos campos tenga con M

Lo he intentado con una consulta con parámetros que me preguntase el mes y el año pero tengo que escribir el parámetro en todos los campos ¿es así? y por lo tanto me lo pide 7 veces o tantos campos tenga con M.

Esta es la consulta pero me dá error

De nuevo... muchas gracias

No sé para que construyes la consulta así. Verás, si tengo la tabla Clientes con unas fechas( que me da la impresión que es así como la tienes, aunque quizá esté equivocado)

Construyo una consulta para "delimitar" años y meses.

Con esta consulta hago una consulta de referencias cruzadas donde en vista diseño, en la barra de menús selecciono Parámetros y los pongo como

Con lo que la consulta será

Cuando la voy a abrir me preguntará por el año. Lo escribo

Al aceptar me preguntará por el mes. Escribo, por ejemplo, Marzo

Al aceptar sólo me saca los registros que cumplan esa condición.

Pero como te decía no me hago a la idea de cómo tienes construidas las tablas. Si no son datos privados y quieres, repito, si quieres mándame la tabla a [email protected] y le echo un vistazo.

Si lo haces, en el asunto del mensaje pon tu alias lolesferlo, ya que si no sé quien me escribe ni los abro.

He intentado mandarte la tabla pero da error la dirección de correo.

Es una tabla donde registramos los días libres que solicitan los trabajadores. Al final del mes necesitamos contabilizar cuantos días libres se han cogido en total.

El campo nombre y destino tiene formato texto. El resto de los campos formato fecha corto.

Es raro no recibirlo porque hasta ahora no he tenido problemas. De todas formas te digo que hay mil formas distintas de hacerlo. Por ejemplo, he construido tu tabla

Como te decía, se puede hacer de mil formas distintas. En este caso construyo una consulta como la de la imagen

Es fácil usando copiar y pegar. Cuando la abro

Sólo me muestra aquellos empleados que ¿solicitaron? Algún día libre. Por cierto, dile a Pepe que es un caradura. Luego en un formulario le pongo dos combinados, el primero llamado Elegirempleado, que sólo me muestra aquellos empleados que SÍ pidieron al menos un día. En el otro combinado me va a mostrar los meses en que ese empleado solicitó al menos un día.

Según mi entender ¿para qué va a mostrarme todos los empleados? Si no aparece en el combinado es que no pidió nada de nada. Por eso no aparecerán ni Ana, Maika, Molinero ni Roberto. Pero eso es opinión mía, ya que no sé como quieres hacerlo.

Elijo a Pepe(el caradura) y en el combinado ElegirMes me va a mostrar sólo aquellos meses en que ¿solicitó? Algo.

Elijo Febrero y

Vamos a elegir a Luis, en el combinado Elegir mes, sólo me muestra el mes en que ha pedido algo.

Elijo Febrero y

Pero, se le podría decir que te mostrara que días pidió, etc.

El origen de la fila del combinado ElegirEmpleado es

SELECT empleado FROM Consulta2 GROUP BY empleado;

El código del evento Después de actualizar de este combinado es

Private Sub ElegirEmpleado_AfterUpdate()
ElegirMes.RowSource = "select mes from consulta2 where empleado like '" & Me.ElegirEmpleado & "' group by mes"
End Sub

Es decir, le doy origen de la fila al combinado ElegirMes. Y el código del evento Después de actualizar de este combinado es

Private Sub ElegirMes_AfterUpdate()
Dim b As Byte
b = DCount("*", "consulta2", "format([m1],""mmmm/yyyy"") like '" & Me.ElegirMes & "' and empleado='" & ElegirEmpleado & "'")
MsgBox "Ese mes, el empleado " & "" & Me.ElegirEmpleado & "" & " ha disfrutado de " & b & " días"
End Sub

¡Gracias!  Mil gracias... super resuelto. Me pongo con ello pero seguro que has dado en el clavo.

Un saludo

Hola Icue.

Voy a seguir aprovechándome de tu generosidad y conocimientos. ¿Cómo tendría que hacer para que me dijese cuantos días se han cogido en un mes y año concreto todos los registros?

Intuyo que sería incluyendo un parámetro en la consulta pero no se hacerlo en sql ¿me echas una mano?

Vamos a hacer una cosa. Mándame un mensaje (sólo el mensaje) a [email protected] y te mando un ejemplo. Tengo que rehacerlo porque ya había eliminado la tabla la consulta, etc.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas