Informe con valores repetidos |
Responder | Página 12> |
Autor | |
damian_colomb
Habitual Unido: 08/Febrero/2021 Localización: Argentina Estado: Sin conexión Puntos: 177 |
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 |
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Enviado: 08/Abril/2021 a las 15:43 |
Hola!
¿Has intentado crear el informe agrupando por Nombre y DNI? |
|
Un Saludo.
|
|
damian_colomb
Habitual Unido: 08/Febrero/2021 Localización: Argentina Estado: Sin conexión Puntos: 177 |
Enviado: 08/Abril/2021 a las 20:04 |
Hola!
Decís que el ID max se lo de al campo apellido y nombre? |
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
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.
|
|
damian_colomb
Habitual Unido: 08/Febrero/2021 Localización: Argentina Estado: Sin conexión Puntos: 177 |
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 |
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
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.
|
|
damian_colomb
Habitual Unido: 08/Febrero/2021 Localización: Argentina Estado: Sin conexión Puntos: 177 |
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 |
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
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
No comentas. |
|
Un Saludo.
|
|
damian_colomb
Habitual Unido: 08/Febrero/2021 Localización: Argentina Estado: Sin conexión Puntos: 177 |
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!! |
|
damian_colomb
Habitual Unido: 08/Febrero/2021 Localización: Argentina Estado: Sin conexión Puntos: 177 |
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 |
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
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.
|
|
damian_colomb
Habitual Unido: 08/Febrero/2021 Localización: Argentina Estado: Sin conexión Puntos: 177 |
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 |
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
Enviado: 10/Abril/2021 a las 19:20 |
Hola!
En vez de "UNION" poner "UNION ALL", a ver si funciona así. |
|
Un Saludo.
|
|
damian_colomb
Habitual Unido: 08/Febrero/2021 Localización: Argentina Estado: Sin conexión Puntos: 177 |
Enviado: 10/Abril/2021 a las 19:26 |
Si le agrego el all, me sigue devolviendo lo mismo con las dos formas
|
|
mounir
Colaborador Unido: 09/Febrero/2009 Localización: Asturias-España Estado: Sin conexión Puntos: 6479 |
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.
|
|
Responder | Página 12> |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |