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: 23/Mayo/2021 a las 06:06 |
Hola!
Hace tiempo que pedí cerrar este hilo, no puedo escribir más en el foro. Muchas gracias Saludos
|
|
damian_colomb
Habitual Unido: 08/Febrero/2021 Localización: Argentina Estado: Sin conexión Puntos: 177 |
Enviado: 06/Mayo/2021 a las 04:21 |
Hola!!
Se puede cerrar este hilo |
|
damian_colomb
Habitual Unido: 08/Febrero/2021 Localización: Argentina Estado: Sin conexión Puntos: 177 |
Enviado: 19/Abril/2021 a las 05:13 |
No pude resolverlo de la manera que pretendía porque se repetían los valores.
Drop here!
Mounir me dió la solución, la idea y el código así que agradezco mucho su ayuda y la comparto con ustedes. Reemplazó los cuadros combinados por cuadros de lista, con selección múltiple, cuyo origen de datos era una consulta idéntica a la que tenía el cuadro combinado. A un botón le colocó el siguiente código: Dim strList As String Dim varItm As Variant For Each varItm In Me.LstMotivoVeda.ItemsSelected strList = strList & Me.LstMotivoVeda.Column(0, varItm) & ", " Next varItm If strList <> "" Then strList = Left$(strList, Len(strList) - 2) End If Me.TxtMotivoVeda = strList & "." DoCmd.SetWarnings False Este código toma los valores seleccionados en el cuadro de lista Lst.MotivoVeda (en rojo) y los pega en el cuadro de texto TxtMotivoVeda (en verde), separado por "," y al final le coloca un "." De esta manera cuando generas la consulta, se inserta en una sola fila y no se duplican los registros, entonces cuando generas un informe de la consulta, como están los datos en una sola fila, no hay valores duplicados. Muchísimas gracias!! Se puede cerrar esta discusión. Saludos
|
|
damian_colomb
Habitual Unido: 08/Febrero/2021 Localización: Argentina Estado: Sin conexión Puntos: 177 |
Enviado: 11/Abril/2021 a las 23:24 |
Perdón que vuelva a insistir con el post, por ahí con un video puedo ser más explícito de lo que estoy haciendo y a donde apunto.
Este es el modelo de como está funcionando, te muestro desde que cargo un paciente hasta que le hago el informe y muestro las tablas donde se guardan.} Al final te agrego la foto de como se vería el informe de la consulta Video: (perdón que lo hice con zoom, pero no tenía otro programa para grabarlo) https://mega.nz/file/thtnhAYI#kSVIOzaNUdhvBjJ0vXW9pU_LJbpkEYg03ndM7HeUpdI Foto del informe: (aclaro que en la consulta solo puse los datos generales y los protocolos y ya se repiten 3 veces las filas) imagínense si tengo 3-4 motivos de consulta, 3-4 diagnósticos para esófago, estómago y duodeno y 2 o 3 terapéuticas, se hacen muchísimas filas) Hoja 1: https://ibb.co/xmp3VHY Hoja2: https://ibb.co/0sh6x9h Saludos y nuevamente muchas gracias |
|
damian_colomb
Habitual Unido: 08/Febrero/2021 Localización: Argentina Estado: Sin conexión Puntos: 177 |
Enviado: 10/Abril/2021 a las 23:09 |
No puedo resolverlo, creo que es porque todavía no comprendo la nomenclatura del sql. Voy a tratar de Leer un poco y ver si puedo escribirlo yo, por ahí lo que hincha es el in join!
De todas maneras gracias!! Si puedo descrifrar mi error lo subo acá y sino vuelvo con alguna otra idea |
|
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.
|
|
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: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 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 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 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 |
|
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!! |
|
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 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 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.
|
|
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 |