** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Informe con valores repetidos
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoInforme con valores repetidos

 Responder Responder Página  12>
Autor
Mensaje
damian_colomb Ver desplegable
Habitual
Habitual


Unido: 08/Febrero/2021
Localización: Argentina
Estado: Sin conexión
Puntos: 177
Enlace directo a este mensaje Tema: Informe con valores repetidos
    Enviado: 08/Abril/2021 a las 01:35
Hola, perdón por lo poco claro del título, pero no sabía expresarlo de otra manera.
Tengo varios formularios de informes, donde voy cargando datos para el informe de una endoscopía, valga la redundancia. El mismo cuenta con varios pasos
1° paso: cargo los datos del informe y agrego el DNI del paciente, tras lo cual se genera un cod_informe para ese paciente
2° con varios formularios voy cargando las distintas características, motivos de consulta, protocolo, diagnósticos. Todos los datos estan relacionados a través del cód_informe.
3° Generé una consulta, para poder ver todos los valores agrupados con el fin de imprimir un informe
4° En la consulta, después de agregar todos los valores, en el campo cod_informe, escribí el criterio DMáx("cod_informes_veda";"Informes_veda") para poder ver el último registro.
5° ahora cuando paso estos datos al informe y pongo como origen la consulta se me generan varias hojas. Les dejo una foto de como quedan los datos en la consulta y como se ven en el informe.

Consulta:
https://ibb.co/0Vk0Dtq

Informe en modo diseño:
https://ibb.co/sQ0fGvF

Informe en modo vista previa:
https://ibb.co/tz2Zcwm

Muchas gracias por la ayuda de siempre!
Saludos

Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje Enviado: 08/Abril/2021 a las 15:43
Hola!

¿Has intentado crear el informe agrupando por Nombre y DNI?
Un Saludo.
Arriba
damian_colomb Ver desplegable
Habitual
Habitual


Unido: 08/Febrero/2021
Localización: Argentina
Estado: Sin conexión
Puntos: 177
Enlace directo a este mensaje Enviado: 08/Abril/2021 a las 20:04
Hola!
Decís que el ID max se lo de al campo apellido y nombre?
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje Enviado: 08/Abril/2021 a las 20:37
Hola!

Damián me cuesta mucho seguirte y entender lo que quieres hacer, lo siento.
Un Saludo.
Arriba
damian_colomb Ver desplegable
Habitual
Habitual


Unido: 08/Febrero/2021
Localización: Argentina
Estado: Sin conexión
Puntos: 177
Enlace directo a este mensaje Enviado: 09/Abril/2021 a las 00:16
Hola! Perdón por no expresarme mejor, voy a intentar ser lo más detallado posible, solo que me cuesta por ahí expresarme con lenguaje técnico porque me estoy iniciando en este mundo.
Estoy diseñando una aplicación para mi trabajo, con su ayuda y con material que he estado viendo y  leyendo en internet, pude armar algo que hace más o menos lo que quiero.
Hago estudios endoscópicos, por lo que estoy interesado en realizar una aplicación que facilite mi trabajo para imprimir un informe con los detalles del estudio para darle al paciente y por otro lado se me guarden los datos para poder procesarlos estadísticamente.
El primer formulario para que esto funcione carga los datos del paciente:

FormRegistrarPaciente:
Nombre, apellido, DNI, Fecha de nacimiento, Seguro social, Nacionalidad, Localidad, Email, Teléfono, observaciones.
Los datos se cargan en cuadros de texto y se agregan a la tabla pacientes en la cual se va generando un cod_id con cada nuevo registro.

Los estudios endoscópicos son 3, VEDA (Video endoscopía digestiva alta), VCC (Videocolonoscopía), CPRE (Colangiopancreatografía retrógrada endoscópica), todos van a funcionar de la misma manera, por ahora pude armar el primero, VEDA.

Para registrar los datos de la VEDA, tengo varios formularios, porque son varios datos. No se llaman form, los nombro así para que sea más fácil leerlo.

Form1: 
En este formulario tengo un cuadro combinado  donde se encuentran los DNI (existe un solo dni por paciente). Al colocarlo, me trae a la vista el nombre, apellido, el seguro social, etc, me calcula la edad y se genera un "id del informe". los datos de este formulario se guardan en la tabla informe_veda, la cual se relaciona con la tabla pacientes a través de un campo llamado cod_pacientes.
Imagen 1:
https://ibb.co/kH8JwxH

Al dar click en aceptar  se guarda la información del form1 en la tabla informes_veda y se genera un id autonúmerico, único por estudio y se abre el form 2.

Form2:
En este formulario agrego los motivos de consulta, los cuales se encuentran en 3 cuadros combinados y se basan en una tabla, donde los cargué. Son 3 que se muestran en pantalla y cuando le doy a aceptar, me pregunta si quiero agregar más, en caso de ser SI, se guardan los motivos que cargue y vuelve abrir el formulario vacio, en caso de ser NO, pasa al form 3. 
Al guardar los datos, se registran en la tabla motivos_veda, la cual se encuentra relacionada con la tabla registros pacientes, a través del campo cod_informe (es el numerito que traigo siempre al formulario arriba a la izquierda). 
https://ibb.co/72TzNy7

Form3:
En este formulario escribo el protocolo es decir el detalle de lo que veo en el esófago, estómago o duodeno. Muchas estudios son normales y para no escribir siempre lo mismo y ahorrar tiempo, arme un cuadro de lista a la izquierda y un cuadro de texto a la derecha.
En el cuadro de lista de la izquierda voy a tener diferentes opciones, a las cuales si les doy doble click, se insertan en el cuadro de texto de la derecha la descripción, la cual puedo editar si quiero agregar o quitar algo.
Los datos en este formulario, se guardan en la tabla protocolo_veda, y se relaciona con la tabla del form1, cod_informe_veda y se abre el form4.
Imagen3:
https://ibb.co/60VvVNC

Form4:
En este formulario agrego los diagnósticos del esófago, estómago y duodeno y se encuentran en cuadros combinados. Al guardar se registran los datos en la tabla diagnosticos_veda y se relacionan a través del cod_informe_veda con la tabla del form1. Para evitar limitar los diagnósticos a cargar, utilizo el mismo sistema que en el form2, un msgbox si/no, que me pregunta si quiero cargar más. De decir NO, se abra el form5.
Imagen 4:
https://ibb.co/vqxP9xr

Form5:
Este es el último formulario, donde registro si realicé alguna terapéutica y si tome una biopsia para anatomía patológica.
Los datos de terapéutica se encuentran en cuadros combinados, de la misma manera que lo vengo haciendo en otros formularios y el dato de anatomía patológica se tilda o no a través de un cuadro de verificación. Se guardan en una tabla y de la misma manera, a través del cod_informe_veda, se relaciona con la tabla del form1. 
Imagen5:
https://ibb.co/k0JrxDX

Ahora bien una vez registrado todos los datos y relacionados entre si, genero una consulta en la cual agrego los datos de todas las tablas que necesito para generar un informe.
El primer problema que tuve es que al cargar todos los datos, en la consulta me aparecían todos los registros de informes que haga. Como yo voy a imprimir en este caso el último que estoy haciendo, se me ocurrió agregar el campo cod_informe_veda y agregarle el criterio dmax, de manera que me traiga el último informe.
De esta manera tengo todos los datos que quiero para imprimir el informe. El problema me surge cuando quiero diseñarlo, tengo todos los datos duplicados. (como mostré en las fotos de mi post más arriba)
Estoy trabado con esto y no puedo avanzar.
Espero haber sido un poco más claro, los link abajo de imagen, son las fotos que esquematizan lo que trato de describir.

Muchas gracias por contestarme y la predisposición de siempre.

Saludos
Drop here!


Editado por damian_colomb - 09/Abril/2021 a las 00:25
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje Enviado: 09/Abril/2021 a las 11:12
Hola!

La duda que tengo es, si en el mismo día se le ha hecho los tres estudios (esófago, estómago o duodeno)?
Un Saludo.
Arriba
damian_colomb Ver desplegable
Habitual
Habitual


Unido: 08/Febrero/2021
Localización: Argentina
Estado: Sin conexión
Puntos: 177
Enlace directo a este mensaje Enviado: 09/Abril/2021 a las 12:23
Buen día!
Si, siempre se miran y describen los 3 organos en el mismo estudio. Puede haber varios diagnósticos,varios motivos de consulta y varias terapéuticas en un mismo informe, en cambio los otras variables van a ser siempre una

Editado por damian_colomb - 09/Abril/2021 a las 12:26
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje Enviado: 09/Abril/2021 a las 13:00
Hola!

Yo lo que haría es una consulta de Unión entre los tres estudios.

Prueba una consulta de selección primero con Protocolo_Veda de esófago y caundo consigues lo que quieres puedes utilizar el predicado (Top) para traer sólo un unico registo


Select Top 1 DNI, Nombre, Fecha, Endoscopista, protocolo_VedaEsofago From Tabla
UNION
Select Top 1 DNI, Nombre, Fecha, Endoscopista, protocolo_VedaEstomago From Tabla
UNION
Select Top 1 DNI, Nombre, Fecha, Endoscopista, protocolo_VedaDuodeno From Tabla


No comentas.

Un Saludo.
Arriba
damian_colomb Ver desplegable
Habitual
Habitual


Unido: 08/Febrero/2021
Localización: Argentina
Estado: Sin conexión
Puntos: 177
Enlace directo a este mensaje Enviado: 09/Abril/2021 a las 13:25
Muchas gracias mounir!!
Voy a ver si me puedo poner a probar esa idea entre hoy y mañana!
Te cuento si me salion!!
Arriba
damian_colomb Ver desplegable
Habitual
Habitual


Unido: 08/Febrero/2021
Localización: Argentina
Estado: Sin conexión
Puntos: 177
Enlace directo a este mensaje Enviado: 10/Abril/2021 a las 16:18
Buen día!!
Hace unas horas que estoy probando diferentes formas de unirla y no he podido!
Tengo 2 problemas principalmente (Exceptuando la limitación lógica de mi escaso conocimiento)
El primero es que los campos DNI, nombre, fecha, endoscopista se encuentran en una tabla y los datos del protocolo_veda_esofago se encuentran en otra. Son varias tablas, relaciaonadas por un mismo campo, dejo foto a continuación:
https://ibb.co/7jCbhyb

El otro problema que tengo es la variabilidad en la cantidad de datos que se van a insertar en ciertos campos, es el caso de motivo de consulta, terapéutica y diagnósticos
A veces puede ser 1 solo motivo de consulta, 1 solo diagnóstico y  1 sola terapéutica, o a veces una cantidad variable de los 3 campos.

Esto no se si lo voy a pode resolver seleccionando una única fila, porque va a ser variable, a veces va a necesitar 2,3 o cualquier número, dependiendo los datos que se ingresen.

No se si me expresé bien en esta ocasión!

Saludos muchas gracias


Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje Enviado: 10/Abril/2021 a las 17:19
Hola!

No veo ningún problema respecto a que la información esta en varias tablas.
Debes crear una consulta de selección con todos los datos que necesitas pero para un protocolo luego los filtras por la fecha más reciente utilizando "Last" o "Max". Una vez conseguido haces el resto de los protocolos y después los unes.
Un Saludo.
Arriba
damian_colomb Ver desplegable
Habitual
Habitual


Unido: 08/Febrero/2021
Localización: Argentina
Estado: Sin conexión
Puntos: 177
Enlace directo a este mensaje Enviado: 10/Abril/2021 a las 18:48
Perdón por ser tan duro mounir! Pero no lo puedo resolver. 
Las variables con los códigos SQL, a ver si te das cuenta cual es mi error

Si yo no agrego un campo nuevo y uno los códigos, el resultado es este:
código:
SELECT distinct Informes_veda.cod_informes_veda, Pacientes.Apellido, Pacientes.Nombre, Pacientes.DNI, Pacientes.[Obra social], Informes_veda.[Servicio que solicito], Informes_veda.Endoscopista, Informes_veda.[Fecha del estudio], Informes_veda.Edad, ProtocolosVeda.Esofago
FROM Pacientes INNER JOIN ((((Informes_veda INNER JOIN motivos_informe_veda ON Informes_veda.cod_informes_veda = motivos_informe_veda.cod_informe_veda) INNER JOIN PatologiaVeda ON Informes_veda.cod_informes_veda = PatologiaVeda.cod_informe_veda) INNER JOIN ProtocolosVeda ON Informes_veda.cod_informes_veda = ProtocolosVeda.cod_informe_Veda) INNER JOIN terapeuticaVeda ON Informes_veda.cod_informes_veda = terapeuticaVeda.cod_informe_veda) ON Pacientes.cod_paciente = Informes_veda.cod_pacientes
WHERE (((Informes_veda.cod_informes_veda)=DMax("cod_informes_veda","Informes_veda")) AND ((ProtocolosVeda.Esofago)=DMax("esofago","ProtocolosVeda")));
UNION
SELECT DISTINCT Informes_veda.cod_informes_veda AS Expr1, Pacientes.Apellido, Pacientes.Nombre, Pacientes.DNI, Pacientes.[Obra social], Informes_veda.[Servicio que solicito], Informes_veda.Endoscopista, Informes_veda.[Fecha del estudio], Informes_veda.Edad, ProtocolosVeda.Estomago
FROM Pacientes INNER JOIN ((((Informes_veda INNER JOIN motivos_informe_veda ON Informes_veda.cod_informes_veda = motivos_informe_veda.cod_informe_veda) INNER JOIN PatologiaVeda ON Informes_veda.cod_informes_veda = PatologiaVeda.cod_informe_veda) INNER JOIN ProtocolosVeda ON Informes_veda.cod_informes_veda = ProtocolosVeda.cod_informe_Veda) INNER JOIN terapeuticaVeda ON Informes_veda.cod_informes_veda = terapeuticaVeda.cod_informe_veda) ON Pacientes.cod_paciente = Informes_veda.cod_pacientes
WHERE (((Informes_veda.cod_informes_veda)=DMax("cod_informes_veda","Informes_veda")) AND ((ProtocolosVeda.Estomago)=DMax("estomago","ProtocolosVeda")));

UNION
SELECT DISTINCT Informes_veda.cod_informes_veda AS Expr1, Pacientes.Apellido, Pacientes.Nombre, Pacientes.DNI, Pacientes.[Obra social], Informes_veda.[Servicio que solicito], Informes_veda.Endoscopista, Informes_veda.[Fecha del estudio], Informes_veda.Edad, ProtocolosVeda.Duodeno
FROM Pacientes INNER JOIN ((((Informes_veda INNER JOIN motivos_informe_veda ON Informes_veda.cod_informes_veda = motivos_informe_veda.cod_informe_veda) INNER JOIN PatologiaVeda ON Informes_veda.cod_informes_veda = PatologiaVeda.cod_informe_veda) INNER JOIN ProtocolosVeda ON Informes_veda.cod_informes_veda = ProtocolosVeda.cod_informe_Veda) INNER JOIN terapeuticaVeda ON Informes_veda.cod_informes_veda = terapeuticaVeda.cod_informe_veda) ON Pacientes.cod_paciente = Informes_veda.cod_pacientes
WHERE (((Informes_veda.cod_informes_veda)=DMax("cod_informes_veda","Informes_veda")) AND ((ProtocolosVeda.Duodeno)=DMax("duodeno","ProtocolosVeda")));

El resultado es este:
https://ibb.co/6YPLVXG
La información se agrega en un último campo, en este caso esófago y coloca los datos provenientes de estómago y duodeno abajo.
Aclaro que si escribo el código por separado, es decir sin las uniones, cada uno funciona bien y agrega una sola fila. De esta forma interpreté el ejemplo que me diste vos.


Ahora bien, pensé que por ahí debería agregar los campos a la consulta y despues hacer la unión.
El código es el siguiente:
SELECT DISTINCT Informes_veda.cod_informes_veda, Pacientes.Apellido, Pacientes.Nombre, Pacientes.DNI, Pacientes.[Obra social], Informes_veda.[Servicio que solicito], Informes_veda.Endoscopista, Informes_veda.[Fecha del estudio], Informes_veda.Edad, ProtocolosVeda.Esofago, ProtocolosVeda.Estomago, ProtocolosVeda.Duodeno
FROM Pacientes INNER JOIN ((((Informes_veda INNER JOIN motivos_informe_veda ON Informes_veda.cod_informes_veda = motivos_informe_veda.cod_informe_veda) INNER JOIN PatologiaVeda ON Informes_veda.cod_informes_veda = PatologiaVeda.cod_informe_veda) INNER JOIN ProtocolosVeda ON Informes_veda.cod_informes_veda = ProtocolosVeda.cod_informe_Veda) INNER JOIN terapeuticaVeda ON Informes_veda.cod_informes_veda = terapeuticaVeda.cod_informe_veda) ON Pacientes.cod_paciente = Informes_veda.cod_pacientes
WHERE (((Informes_veda.cod_informes_veda)=DMax("cod_informes_veda","Informes_veda")) AND ((ProtocolosVeda.Esofago)=DMax("esofago","ProtocolosVeda")));

UNION
SELECT DISTINCT Informes_veda.cod_informes_veda, Pacientes.Apellido, Pacientes.Nombre, Pacientes.DNI, Pacientes.[Obra social], Informes_veda.[Servicio que solicito], Informes_veda.Endoscopista, Informes_veda.[Fecha del estudio], Informes_veda.Edad, ProtocolosVeda.Esofago, ProtocolosVeda.Estomago, ProtocolosVeda.Duodeno
FROM Pacientes INNER JOIN ((((Informes_veda INNER JOIN motivos_informe_veda ON Informes_veda.cod_informes_veda = motivos_informe_veda.cod_informe_veda) INNER JOIN PatologiaVeda ON Informes_veda.cod_informes_veda = PatologiaVeda.cod_informe_veda) INNER JOIN ProtocolosVeda ON Informes_veda.cod_informes_veda = ProtocolosVeda.cod_informe_Veda) INNER JOIN terapeuticaVeda ON Informes_veda.cod_informes_veda = terapeuticaVeda.cod_informe_veda) ON Pacientes.cod_paciente = Informes_veda.cod_pacientes
WHERE (((Informes_veda.cod_informes_veda)=DMax("cod_informes_veda","Informes_veda")) AND ((ProtocolosVeda.Estomago)=DMax("estomago","ProtocolosVeda")));

UNION
SELECT DISTINCT Informes_veda.cod_informes_veda, Pacientes.Apellido, Pacientes.Nombre, Pacientes.DNI, Pacientes.[Obra social], Informes_veda.[Servicio que solicito], Informes_veda.Endoscopista, Informes_veda.[Fecha del estudio], Informes_veda.Edad, ProtocolosVeda.Esofago, ProtocolosVeda.Estomago, ProtocolosVeda.Duodeno
FROM Pacientes INNER JOIN ((((Informes_veda INNER JOIN motivos_informe_veda ON Informes_veda.cod_informes_veda = motivos_informe_veda.cod_informe_veda) INNER JOIN PatologiaVeda ON Informes_veda.cod_informes_veda = PatologiaVeda.cod_informe_veda) INNER JOIN ProtocolosVeda ON Informes_veda.cod_informes_veda = ProtocolosVeda.cod_informe_Veda) INNER JOIN terapeuticaVeda ON Informes_veda.cod_informes_veda = terapeuticaVeda.cod_informe_veda) ON Pacientes.cod_paciente = Informes_veda.cod_pacientes
WHERE (((Informes_veda.cod_informes_veda)=DMax("cod_informes_veda","Informes_veda")) AND ((ProtocolosVeda.Duodeno)=DMax("DUODENO","ProtocolosVeda")));

El resultado es este:
https://ibb.co/RYdwPwB
Me agrega en la consulta una fila para esófago, una para estómago y una para duodeno.
Aclaro que acá también si escribo los códigos por separado funciona bien y coloca los datos donde tiene que colocarlos, en una sola fila.



Drop here!


Editado por damian_colomb - 10/Abril/2021 a las 18:49
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje Enviado: 10/Abril/2021 a las 19:20
Hola!

En vez de "UNION" poner "UNION ALL", a ver si funciona así.
Un Saludo.
Arriba
damian_colomb Ver desplegable
Habitual
Habitual


Unido: 08/Febrero/2021
Localización: Argentina
Estado: Sin conexión
Puntos: 177
Enlace directo a este mensaje Enviado: 10/Abril/2021 a las 19:26
Si le agrego el all, me sigue devolviendo lo mismo con las dos formas
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6479
Enlace directo a este mensaje Enviado: 10/Abril/2021 a las 19:36
Hola!

Utilizas la función "DMax" para los protocolos cuando se debe aplicar sobre la fecha. Además intenta agrupar las consultas por separado, utiliza "Max" o "Last" en totales para la fecha y cuando te cuadre el resultado los unes. a ver que pasa.

Editado por mounir - 10/Abril/2021 a las 19:38
Un Saludo.
Arriba
 Responder Responder Página  12>
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable