[ACCESO] Concatenar completamente una columna

Resuelto

Hola,

No sé si esto debe hacerse a través de SQL o VBA (acepto cualquier opción), pero estoy atascado en algo que probablemente sea simple. Cuando busco, me encuentro con cosas más complicadas.

Busco 'simplemente' concatenar toda una columna de una tabla en una sola celda, separada por pipes "|", en toda una columna de una consulta.

Ejemplo (la columna 2 está ahí solo para especificar que tengo varias columnas en mi tabla):

Quiero que los valores de la columna1 de Ma_Table se concatenen completamente y se separen por pipes, en todas las celdas de la columna2 de Ma_Consulta.

Tabla: Ma_Table

Columna1           Columna2

A                        1
B                        2
C                        3
D                        4


Resultado deseado:

Consulta: Ma_Consulta

Columna1                        Columna2

Dato 1 columna 1       A|B|C|D
Dato 2 columna 1       A|B|C|D
Dato 3 columna 1       A|B|C|D
Dato 4 columna 1       A|B|C|D

¡Espero haber sido lo suficientemente claro en mi solicitud!

Gracias de antemano.

2 respuestas

  1. Colaborador

    hola,

    ¿en qué caes? ¿has probado?

    0
    1. Hola,

      Si la pregunta es '¿he intentado por mí mismo?', lamentablemente sí, siempre intento antes de pedir, de lo contrario no hay progreso :D

      He intentado varias cosas provenientes de diversos temas en foros, pero no he podido encontrar un tema que correspondiera a mi necesidad, así que he tenido que hacer pruebas y trastear cada vez, pero sin ningún resultado que se acerque, ni de cerca ni de lejos, a lo que busco..

      Gracias por la atención prestada a mi problema :)

      0
    2. @yg_be

      Mi respuesta parece haberse volatilizado..

      Gracias, ¡tu enlace me ha llevado a una pista!

      De hecho, al ver las diferentes propuestas en tu enlace, recordé un trozo de código que había utilizado para otra cosa. Lo he adaptado y después de un tiempo y numerosos fracasos, ¡logré hacer funcionar la bestia!

      ublic Function Concatenation() As String Dim res As DAO.Recordset Dim sql As String 'Selecciona la columna Ma_colonne de la tabla Ma_Table sql = "SELECT Ma_colonne FROM Ma_Table" Set res = CurrentDb.OpenRecordset(sql) 'Concatena los diferentes registros While Not res.EOF Concatenation = Concatenation & res.Fields(0).Value & "|" res.MoveNext Wend 'Elimina el último | Concatenation = Left(Concatenation, Len(Concatenation) - 1) 'libera la memoria Set res = Nothing End Function

      Y luego llamé a la función en mi consulta.

      0
    3. Colaborador
      @LaConcatenation

      Un detalle: si la tabla está vacía, la línea 17 se va a caer, creo.

      2
    4. @yg_be

      Efectivamente, acabo de vaciar mi mesa para probar y fue bloqueante. ¡Gracias por la revisión! :)

      0
  2. Hola,

    Para concatenar con letras o símbolos particulares, la respuesta es simple. Hay que introducir '& "' y ' " &' entre cada elemento a concatenar. Por ejemplo: Col1 & " | " & Col2 & " | " & Col3 & " |" & etc.

    Para concatenar datos que no pertenecen al mismo registro, simplemente no es posible. Esa es una particularidad de los SGBD.

    Buen día

    0
    1. Hola, gracias por tu respuesta. Sin embargo, a través de VBA pude atender mi necesidad, consulta mi respuesta a yg_be arriba.

      Que tengas un buen día.

      0