Discussion:
Agrupar en un campo todos los registros que encuentre separados por ";"
(demasiado antiguo para responder)
Rodrigo Garcia
2017-09-20 12:04:57 UTC
Permalink
Estoy cruzando dos tablas que tienen 2 columnas cada una. Una de las tablas tiene duplicados y necesito tener asociado a un identificador todos los valores existentes en la otra tabla pero separados por ";" en un único registro para no tener registros duplicados por el primer identificador.

¿Cómo podría hacer esto? He leído por ahí que se puede hacer con algo de código VBA o similar, pero ni idea del código en concreto y después como invocarlo para que al ejecutar la consulta, me apareciera la información como necesito.

Por si no me he explicado bien, intento ilustrar la necesidad con un ejemplo:

Tabla 1 --> El campo Columna A no tiene duplicados
Columna A; Columna B
Tabla 2 --> Para un mismo valor del campo Columna C, hay varios valores de Columna D
Columna C; Columna D

Cruzo ambas tablas por Columna A y Columna C generando una tabla con los campos
Columna A; Columna B; y Columna D, el problema es que se me producen duplicados basándome en el campo Columna A porque hay varios valores de Columna D asociados al valor de Columna A y C.

Lo que necesitaría sería crearme una columna adicional X que contuviera los valores de Columna D que tuvieran a su vez el mismo valor de Columna C. Dichos valores deberían estar separados por ";" para separarlos, de esa forma, la tabla resultando con los campos Columna A, Columna B y Columna X, no tendría duplicados.

Gracias
Rodrigo Garcia
2017-09-20 13:26:22 UTC
Permalink
He visto por ahí algún código como este (visto en http://microsoft.public.es.access.narkive.com/nMGnSrfR/duplicados-en-consulta-unirlos-para-que-se-vean-en-una-sola-linea-los-no-duplicados):

Public Sub LeerCampo1()

Dim cnn As Connection
Dim rst As Recordset
Dim sSQL As String
Dim sAcumular As String

Set cnn = CurrentProject.Connection
Set rst = New Recordset
sSQL = "Select Campo1 from Tabla1"
rst.Open sSQL, cnn
Do While Not rst.EOF
&&&&sAcumular = sAcumular & rst!Campo1
Loop
rst.Close
cnn.Close
Set rst = Nothing
Set cnn = Nothing

End Sub

También en esta otra página he visto otro ejemplo:

https://social.technet.microsoft.com/Forums/es-ES/50589f41-c0be-4b6d-a8ab-52792bd4de20/unir-registros-de-un-mismo-campo?forum=exceles

Sinceramente, no entiendo nada. Si pegara este código en un módulo, tampoco sabría como llamarlo. ¿Alguna recomendación? Entiendo que es un problema o necesidad relativamente común.
Loading...