Informe para "columna" que hay que dividirla en dos: Por cada grupo etareo presentar los masculino y femeninos.Access 2007

Salud y éxitos:

Tengo que presentar un informe en el proyecto de acces que estoy realizando donde se muestran la cantidad de incidencias de cada enfermedad por grupos etáreos y estos a su vez divididos en masculinos y femeninos. Todos esos datos los tengo en una consulta de selección. Una consulta de referencias cruzadas no me resuelve para mostrar los datos como necesito.

Esto es lo que tengo:

Esto es lo que necesito mostrar con esos datos: (evidente que es un ejemplo y no se corresponde con los datos anteriores)

He tratado de hacerlo con los informes pero no lo logro. Alguna idea clara, información o ejemplo para consultar, sugerencia, cualquier cosa vendrá bien.

2 Respuestas

Respuesta
3

Las consultas de referencias cruzadas no deberían existir ... :-P

Necesitas una consulta que te agrupe por código de enfermedad, y te sumarice por grupo.

Espero que tengas un código de grupo: 1, 2, 3, 4 en vez de '0<1' '1-4' ... etc.

La consulta para calcular los datos (que después puedes emplear en el informe, o asignarla directamente en el informe tiene que ser algo así como:

SELECT Enfermedad, NombreEnfermedad,
Sum(IIf([Grupo]=1 And [Sexo]='M',[Cantidad],0)) AS Gr1M,
Sum(IIf([Grupo]=1 And [Sexo]='F',[Cantidad],0)) AS Gr1F,
Sum(IIf([Grupo]=2 And [Sexo]='M',[Cantidad],0)) AS Gr2M,
Sum(IIf([Grupo]=2 And [Sexo]='F',[Cantidad],0)) AS Gr2F
FROM TP4 LEFT JOIN Enfermedades ON TP4.Enfermedad = Enfermedades.IdEnfermedad
GROUP BY TP4.Enfermedad, NombreEnfermedad

Lo bueno de este tipo de consultas (en vez de las de ref. cruzaqdas) es que puedes relacionarlas con otras tablas (como he hecho con esta), emplearla dentro de otra consulta, usarla como consulta de creación, etc.

Parecen largas de escribir, pero si te das cuenta las líneas de grupo son idénticas entre sí, solo hay que cambiar el nombre que va a recibir, el grupo y el sexo ...

Respuesta
2

Una idea, pero ya te adelanto que es un proceso laborioso, y solo te servirá bajo la premisa de que los grupos de los "encabezados" son "fijos", es decir, tus grupos siempre serán 0<1, 1-4... (o los que realmente tengas)

1º paso: diseñar el informe con los campos cod. Enfermedad y enfermedad. A continuación, insertas 2 cuadros de texto independientes por cada grupo de los que tengas y puedan aparecer en el informe. Por último, añades las etiquetas M y F y encima las de los grupos.

Te tiene que quedar una parte con las etiquetas de los encabezados y una fila con cuadros de texto (2 por grupo x N grupos + 2 dependientes de la tabla, según el ejemplo). Los cuadros independientes los renombras a algo fácil de identificar: M01, F01, M02, F02...

2º paso: programar para rellenar los cuadros independientes:

En el evento "Al dar formato" de la sección en que tengas los cuadros independientes (lo normal sería en la sección "detalle"), generas este código (lo haré para un par de cuadros y el resto lo haces tú):

Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)
Me.M01=DLookUp("Cantidad","NombreConsulta","Sexo='Masculino' AND [Cod Enfermedad]='" & Me.Cod_Enfermedad & "' AND Grupo='0<1'")
Me.F01=DLookUp("Cantidad","NombreConsulta","Sexo='Femenino' AND [Cod Enfermedad]='" & Me.Cod_Enfermedad & "' AND Grupo='0<1'")
Me.M02=DLookUp("Cantidad","NombreConsulta","Sexo='Masculino' AND [Cod Enfermedad]='" & Me.Cod_Enfermedad & "' AND Grupo='1-4'")
Me.F02=DLookUp("Cantidad","NombreConsulta","Sexo='Femenino' AND [Cod Enfermedad]='" & Me.Cod_Enfermedad & "' AND Grupo='1-4'")
'Y así con el resto...
End Sub

Creo que la idea se pilla, ¿no? Coges un campo (M01 que seróa Masculino para el primer grupo) y con la función DLookup() buscas el valor del campo Cantidad en la consulta que corresponde al grupo ("0<1"), al sexo ("masculino") y a la enfermedad de la linea (Me.Cod_Enfermedad). Ajusta los nombres de los campos y demás y listo.

Ah, te servirá siempre que el informe lo imprimas o lo abras en vista preliminar, en vista informes no funciona.

Un saludo


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas