Imprimir página | Cerrar ventana

Consulta mostrar un solo registro (si duplicado)

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86855
Fecha de impresión: 26/Marzo/2026 a las 20:58


Tema: Consulta mostrar un solo registro (si duplicado)
Publicado por: maserrano
Asunto: Consulta mostrar un solo registro (si duplicado)
Fecha de publicación: 08/Febrero/2024 a las 16:35
Hola y buenas tardes.
Tengo una tabla con datos y uno de ellos se repite.
Hago una consulta para volcar algunos esos datos en un formulario. A la consulta le pongo la condición a ese campo, que se puede repetir, de que tenga valor (is not null), pero cómo puedo hacer para que sólo me muestre uno.
Me es indiferente cuál pues los demás datos que saco en la consulta son iguales.
Gracias por adelantado.



Respuestas:
Publicado por: javier.mil
Fecha de publicación: 08/Febrero/2024 a las 17:30
Buenas

Mira la instrucción TOP

Ejemplo
SELECT TOP 1 * FROM Mitabla;

En este ejemplo solo mostrara el primer registro


-------------
https://www.accessdemo.info" rel="nofollow - https://www.accessdemo.info





Publicado por: maserrano
Fecha de publicación: 08/Febrero/2024 a las 18:46
Con esa instrucción sólo memuestra un registro.
He probado ha realizar una consulta diciéndole que sea distinto y no nulos para el campo en el que quiero que se aplique:

SELECT DISTINCT TRegO.IdOperador FROM TRegO WHERE (((TRegO.IdOperador) Is Not Null));

Así me muestra 105 registros.
Con los NO distintos serían 116
Si incluyo los que tienen este campo vacío son 180 registros, que es el total.

Ahora hago otra consulta sobre la consulta anterior y la tabla que contiene los datos.
Si le incluyo el campo CIF, me sigue mostrando 105 registros; pero si le incluyo el campo nombre, me salen 107 registros y es porque hay dos registros que tienen el campo nombre no iguel (una coma, un espacio,...).
Supongo que el DISTINCT mira en todos los campos que incluyas y yo sólo quiero que se aplique al primer campo "IdOperador", pero no lo consigo.
Si le meto más campos como dirección municipio, y otros en los que hay diferencias, se me va a los 116 registros que son todos los que tienen datos en el campo IdOperador.

No doy con la tecla. Alguna sugerencia?




Publicado por: maserrano
Fecha de publicación: 08/Febrero/2024 a las 23:10
He intentado hacer una subconsulta dentro de la consulta pero no me da resultado.  Me dice que sólo mostrará un registro y, de hecho, ni lo muestra.
Se podría hacer por VBA?
No sé ni cómo se plantearía, por si me dan alguna idea..  Graciaaas


Publicado por: pitxiku
Fecha de publicación: 08/Febrero/2024 a las 23:17
Prueba con una consulta de totales. Por ejemplo, teniendo esta tabla:

TablaMaserrano
CampoRepe CampoBlancos
Pepe Dos
Juan Uno
Juan
Juan Tres
Pepe
Alberto
Ana Uno
Ana Dos
Ana Tres
María
María Dos
María
Isabel
Isabel
Pepe Uno

Esta consulta:
SELECT First(TablaMaserrano.CampoRepe) AS PrimeroDeCampoRepe, First(TablaMaserrano.CampoBlancos) AS PrimeroDeCampoBlancos
FROM TablaMaserrano
WHERE ((Not (TablaMaserrano.CampoBlancos) Is Null))
GROUP BY TablaMaserrano.CampoRepe;

Devuelve esto:

ConsultaDistintos
PrimeroDeCampoRepe PrimeroDeCampoBlancos
Ana Uno
Juan Uno
María Dos
Pepe Dos

Nota: El First de la consulta devolverá el primer registro que quiera Access, no el primero de un orden. Pero como has dicho que eso no importa...


Publicado por: maserrano
Fecha de publicación: 09/Febrero/2024 a las 09:49
Muy buenas a todos
Muchas gracias pitxiku
Es la consulta que quería y con todos los campos. Salen los registros que deben salir. Genial, de verdad.
Por mi parte se puede cerrar el hilo.



Imprimir página | Cerrar ventana