Agrupar datos de consulta que contiene campos bolean

Bueno como lo dice la pregunta solo deseo agrupar la información según la fecha del registro, nombre y dni, adjunto captura de la consulta

y me gustaria que la consulta con todos los registros que contendrá quede asi

Ciertamente cada usuario podría tener hasta 4 registros en una misma fecha (desayuno, almuerzo, cena colación.

Algo así

lo que debería agruparse así

Todo dependiendo de los registros presentes en el mismo día como lo puse en la primera captura, y así que suceda con todos los registros de la tabla diferenciando por fecha dni y nombre.

Ya sea lograrlo en la misma consulta o a partir de ella crear una con esas características.

3 Respuestas

Respuesta
2

Hacerlo con una consulta es sencillísimo:

1º/ Creas una consulta en vista diseño sobre la tabla/tablas que contengan los datos, teniendo cuidado de coger únicamente campos que se puedan repetir (no uses ningún autonumérico) más los 4 que son casillas de verificación

2º/ Convierte tu consulta a consulta de totales y agrupa por todos los cmapos, menos los de Alojamiento, desayuno..., que los agrupas por suma.

Con eso ya tienes la consulta que buscas, aunque no verás los campos como casillas de verificación, sino que verás un 0 si no está niguna marcada y -1 si hay alguna marcada.

Luego puedes hacer un informe (o formulario) sobre la consulta, cambiando los cuadros de texto por casillas de verificación y asignándole a esas casillas los campos de ta consulta como origen de control.

Te dejo un ejemplo: http://www.filebig.net/files/Sx8chJYe43 

Y todo ellos sin usar una linea de código.

Respuesta
2

Hacerlo con una consulta no lo sé. Pero si lo quieres en un informe, es sencillo.

Con Fecha, DNI y Nombre haces un informe. En las propiedades del informe, en Datos-Origen del registro, con el generador añades la tabla y los campos antes citados, y los agrupas como Agrupar por. Luego le añades cuatro casillas de verificación llamadas, Desayuno, almuerzo,...

En las propiedades de la sección donde están las casillas, en el evento Al dar formato crea un proc. De evento y escribe

Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)
If Nz(DCount("*", "tabla1", "fecha=#" & Me.Fecha & "# and dni='" & Me.DNI & "' and desayuno=-1")) = 1 Then
Desayuno = True
Else
Desayuno = False
End If
If Nz(DCount("*", "tabla1", "fecha=#" & Me.Fecha & "# and dni='" & Me.DNI & "' and almuerzo=-1")) = 1 Then
Almuerzo = -1
Else
Almuerzo = 0
End If
If Nz(DCount("*", "tabla1", "fecha=#" & Me.Fecha & "# and dni='" & Me.DNI & "' and cena=-1")) = 1 Then
Cena = -1
Else
Cena = 0
End If
If Nz(DCount("*", "tabla1", "fecha=#" & Me.Fecha & "# and dni='" & Me.DNI & "' and colacion=-1")) = 1 Then
Colacion = -1
Else
Colacion = 0
End If
End Sub

Ejemplo. si tengo la tabla Tabla1

Cuando abro el informe en vista previa de impresión

Respuesta
1

SELECT Tabla1.Fecha, Tabla1.DNI, Tabla1.[Nombre/Apellido], Sum(Tabla1.Desayuno) AS SumaDeDesayuno, Sum(Tabla1.Almuerzo) AS SumaDeAlmuerzo, Sum(Tabla1.Cena) AS SumaDeCena, Sum(Tabla1.Colacion) AS SumaDeColacion
FROM Tabla1
GROUP BY Tabla1.Fecha, Tabla1.DNI, Tabla1.[Nombre/Apellido];

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas