[ACCESO] Concatenar completamente una columna

Resuelto
LaConcatenation -  
 LaConcatenation -

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. yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   Ambassadeur 1 588
     

    hola,

    ¿en qué caes? ¿has probado?

    0
    1. LaConcatenation
       

      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
      1. LaConcatenation > yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención  
         

        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
      2. yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención   1 588 > LaConcatenation
         

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

        2
      3. LaConcatenation > yg_be Mensajes publicados 23437 Fecha de registro   Estado Colaborador Última intervención  
         

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

        0
  2. Tessel75
     

    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. LaConcatenation
       

      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