¿Cómo puedo en Access realizar una unión de registros en una tabla con dos campos?

Tengo una tabla en access con dos campos (NºCodigo y Descripción) y quisiera realizar una unión de registros (no campos de un mismo registro) condicionados a que el NºCodigo sea igual. Me explicaré con un ejemplo:
NªCodigo Descripción
123 Producto fabricado en China
123 Producto comercializado por la empresa ...
123 Posee componentes peligros
245 Producto fabricado en la UE
245 Producto solo comercilizado desde la empresa matriz
245 Comercilizado según Directiva Europea 858/10
   Mi idea era crear una nueva tabla con dos campos: NºCodigo (el común a ellos) y otro campo memo que uniera el contenido de los registros que tienen el mismo NºCodigo. No se si esto se puede realizar mediante consulta (he estado mirando por ahí pero no he encontrado nada) o habrá que realizarlo mediante código (algo en lo que no estoy muy puesto).

1 respuesta

Respuesta
1
Me parece que por consulta no se puede hacer, tendrás que hacerlo con código. Suponemos una tabla Origen (NCodigo y Descripción) y una tabla Destino con los mismos campos. He puesto NCodigo porque no es conveniente poner caracteres "raros" en los nombres de los campos, cuando se utiliza código puede dar problemas.
La función sería:
Function Concatenar()
'Definimos las variables
Dim db As Database
Dim rs1 As Recordset
Dim rs2 As Recordset
Dim vCodigo As String
Dim vDescripcion As String
'Activamos la BD
Set db = CurrentDb
'Abrimos los recordset, el 1º para recorrer la tabla origen, el 2º para abrir la tabla destino
Set rs1 = db.OpenRecordset("Select NCodigo, Descripcion from Origen order by NCodigo")
Set rs2 = db.OpenRecordset("Destino")
'Empezamos a recorrer la tabla origen
Do While Not rs1.EOF
vCodigo = rs1!ncodigo
vDescripcion = ""
'Mientras no sea final de fichero y el codigo sea el mismo, concatenamos las descripciones
Do While Not rs1.EOF And vCodigo = rs1!ncodigo
vDescripcion = vDescripcion + rs1!descripcion
rs1.MoveNext
'Si es final de fichero salimos del bucle
If rs1.EOF Then
Exit Do
End If
Loop
'Una vez que el código varia añadimos el registro a la tabla destino
rs2.AddNew
rs2!ncodigo = vCodigo
rs2!descripcion = vDescripcion
rs2.Update
Loop
End Function
Me cuentas, saludos Angeles
Página Supuestos y solucciones en access: http://angelessebas.es/

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas