Informe sin duplicados a partir de un filtro

Estoy desesperado y por lo que yo creo cegato ya de buscar una solución. Explico. Tengo dos tablas

Certificados y Equipos

Certificados tiene campos como (documento, IDequipo, fecha certificado)

Equipos (IDequipo, marca, modelo, nº de serie, seccion, Empresa)

Cada equipo puede tener varios certificados realizados en años diferentes. Y dentro de cada año puede tener varios certificados, ejemplo

Equipo 1 - Certificado 01 - 10/04/2021 - Empresa A

Equipo 2 - Certificado 02 - 10/04/2021 - Empresa A

Equipo 3 - Certificado 03 - 12/04/2021 - Empresa A

Equipo 4 - Certificado 04 - 12/04/2021 - Empresa A

Equipo 1 - Certificado 10 - 20/09/2021 - Empresa A

Equipo 2 - Certificado 11 - 20/09/2021 - Empresa A

Equipo 3 - Certificado 12 - 22/09/2021 - Empresa A

Equipo 4 - Certificado 13 - 22/09/2021 - Empresa A

Equipo 1 - Certificado 30 - 12/01/2022 - Empresa A

Equipo 2 - Certificado 31 - 12/09/2022 - Empresa A

Equipo 3 - Certificado 32 - 12/09/2022 - Empresa A

Equipo 4 - Certificado 33 - 12/09/2022 - Empresa A

Bien la idea es mediante un formulario y unos cuadros combinados, seleccionar la empresa y el año que me interesa y al pulsar el botón de aceptar me imprima un informe de los certificados que tiene esa empresa en ese año pero sin duplicados.

Por ejemplo en un cuadro combinado elijo empresa A y en el otro cuadro combinado el año 2021 me debería imprimir esta lista

Listado de certificados de la empresa A

Documento - Marca - Modelo - N. Serie - Seccion - Fecha anterior

Certificado 10 - Bolibic - Naranja - 1234 - Almacen - 20/09/2021

Certificado 11 - Bolibic - Crista - 5678 - Escritorio - 20/09/2021

Certificado 12 - Bolichino - Rojo - ABCD - Laboratorio - 22/09/2021

Certificado 13 - Bolichino - Verde - CH123 - Laboratorio - 22/09/2021

Ya he conseguido crear el formulario con la creación del filtro y que me saque un listado con todos los certificados de una empresa realizados en un año determinado. Pero lo que no he conseguido es eliminar los duplicados del año 2022 para que me salga impreso el listado anterior. Ahora lo único que consigo es esto:

Documento - Marca - Modelo - N. Serie - Seccion - Fecha anterior

Certificado 01 - Bolibic - Naranja - 1234 - Almacen - 10/04/2021

Certificado 02 - Bolibic - Crista - 5678 - Escritorio - 10/04/2021

Certificado 03 - Bolichino - Rojo - ABCD - Laboratorio - 12/04/2021

Certificado 04 - Bolichino - Verde - CH123 - Laboratorio - 12/04/2021

Certificado 10 - Bolibic - Naranja - 1234 - Almacen - 20/09/2021

Certificado 11 - Bolibic - Crista - 5678 - Escritorio - 20/09/2021

Certificado 12 - Bolichino - Rojo - ABCD - Laboratorio - 22/09/2021

Certificado 13 - Bolichino - Verde - CH123 - Laboratorio - 22/09/2021

Y como expuse antes solo quiero que me salga el listado con los certificados mas recientes dentro del año elegido.

2 respuestas

Respuesta
1

En lugar de utilizar la tabla que tiene los certificados duplicados, utilizar una consulta basada en ella que agrupe los datos por certificado y que devuelva el que tenga la fecha mas alta (que se supone es el ultimo).

En base a los datos publicados, utilizar la consulta en lugar de la tabla debería resolver el problema.

Gracias por responder,

El problema es que la consulta que hago la debo hacer mal, porque yo para hacer la consulta, pongo las dos tablas, las uno mediante IDequipo y por tanto de cada certificado saco los datos del equipo en cuestión.

Cuando le digo agrupar por fecha (maximo) o por documento, y utilizo esa consulta como origen de datos en el formulario, al entrar al formulario, la fecha no está disponible o el documento y me sale un recuadro que me pide el dato del campo que utilicé para agrupar, le pongo lo que sea y el formulario ya funciona correctamente pero sigue saliendo duplicados, es decir siguen saliendo dos o mas certificados por equipo.

La consulta deberá devolver a todos los equipos con los datos que se necesiten

Se crea una subconsulta con los campos que los diferencian (marca, modelo, numero de serie, y la Fecha del certificado)

.- Se agrupa por los tres primeros

[marca]
En  Total: 'Agrupar por'

[modelo]
En  Total: 'Agrupar por' 

[numero de serie]
En Total: 'Agrupar por'

El campo de fecha se utilizara dos veces:

.- Una para seleccionar el año (se utiliza una expresión para obtener el solo el año)
XXX:Year([la Fecha del certificado])
En criterio: el año (2022 o el que corresponda)
En Total: 'Dónde'

.- La segunda vez para obtener la mayor del subconjunto:
[la Fecha del certificado]
En Total: 'Máx'

El resultado será una serie de equipos que no se repiten y con la fecha de certificación mas reciente en el año que se utilizo como condición.

Se añade esta consulta a la completa (que muestra/tiene todos los datos), se relacionan ambas (por todos los campos) y si todo esta bien hecho, devolverá los datos que se esperan y/o necesitan.

¡Gracias!

Aprovechando esta opción y la que me envió Julían González Cabarcos he podido crear lo que necesitaba y funciona perfectamente.

Muchísimas gracias.

Respuesta
1

Si los datos no son confidenciales, ¿podrías mandarme una copia de la base a [email protected]

Es que así no tengo que "construir" ninguna tabla y trabajo directamente sobre los valores.

Si lo haces, en el asunto del mensaje pon tu alias Fernando Olmeda, ya que si no sé quien me escribe ni los abro.

Lamentablemente la base de datos es totalmente confidencial y es una fuga de datos que la 17025 no me permite hacer.

No se como hacer para que tengas datos suficientes para que puedas diseñar lo que tengas en mente.

Es que sin saber la estructura de las tablas, del formulario, y del informe es difícil dar una respuesta concreta. Por otro lado, en los datos que das al principio, en el año 2022 el Certificado 30 tiene fecha de 12 de Enero y los demás tienen fecha de Septiembre. Por otro lado, hay un momento que dices

Quiero que me salga el listado con los certificados mas recientes dentro del año elegido.

Por eso supongamos que tengo las tablas que citas y con ellas hago un formulario con un subformulario tal que

El segundo registro sería

Y así los demás.

Si ahora elijo en el combinado de arriba, que sólo me muestra las empresas que tienen algún certificado, en este caso sólo la A

Selecciono el año, que sólo muestras los años en que la EmpresaA ha tendido certificados. En ese momento me abre el informe

Con los certificados de ese año.

Al decir, los más recientes, lógicamente, sólo debería mostrar uno, pero en lo que escribistes aparecen 4 certificados (los más recientes) y que quieres que te diga pero los más recientes son los de año 2022, no los del 2021.

El código del combinado Elegir año es

Private Sub ElegirAño_AfterUpdate()
DoCmd.OpenReport "equipos", acPreview, , "año=" & Me.ElegirAño & " and empresa='" & Me.ElegirEmpresa & "'"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas