Concatenar campo en Access

Trato de concatenar registros de una consulta donde tengo el campo D3 que es el que quiero concatenar y id_tejido. He intentado llamar a una función desde la consulta pero no atino con el código.

1 Respuesta

Respuesta
1

Para concatenar 2 campos de un registro se usa el carácter "&". Por ejemplo:

camposUnidos: D3 & id_tejido

Ahora bien, creo entender que quieres unir un campo de un registro con otro campo de otro registro distinto de la misma tabla. Esto lo podrías hacer agregando 2 veces la misma tabla en tu consulta (en este caso es conveniente poner alias a cada tabla en la ventana de propiedades).

Un caso típico de usar 2 veces la misma tabla es una estructura jerárquica de centros, donde un centro depende de otro centro superior. En la tabla tendrías algo así como "codigoCentro", "nombreCentro" y "codigoCentroSuperior".

En este caso, para sacar en una consulta un centro, su nombre y el superior haríamos una consulta como esta:

SELECT a.codigoCentro,a.nombreCentro,b.nombreCentro as nombreCentroSuperior

FROM centros as a left join centros as b on a.codigoCentroSuperior=b.codigoCentro

No sé si te he respondido a lo que buscabas.

Creo que no me he explicado bien. Lo que necesito es concatenar registros de un MISMO CAMPO. Ej:

-algodón50%

-lana 50%

quedaría : algodón50% lana 50%

Entonces yo haría una función dependiendo del valor de D3. Sería algo así:

Option Compare Database
Option Explicit
Function miraArticulosConUnD3(ByVal d3 As String) As String
' Si el campo D3 fuese numérico lo definiríamos como integer, double
' o el tipo que sea y el SQL terminaría con "WHERE D3=" & d3
' (igual pero sin comillas).
Dim rs As Recordset
Dim aux As String
Dim txtSQL As String
' Construimos una consulta de todos los artículos con el
' campo "D3" que nos han pasado.
txtSQL = "SELECT * FROM nombreTabla WHERE D3='" & d3 & "'"
Set rs = CurrentDb().OpenRecordset(txtSQL)
If Not rs.EOF Then rs.MoveFirst
aux = ""
Do While Not rs.EOF
If aux <> "" Then aux = aux & " " ' Separamos un artículo de otro con un blanco
aux = aux & rs!id_articulo
' Si queremos que ponga D3 y artículo en la salida podríamos
' cambiar por: aux = aux & d3 & "-" & rs!id_articulo
rs.MoveNext
Loop
rs.Close
miraArticulosConUnD3 = aux
End Function

Creo que ahora sí está más cerca de lo que quieres.

No me has dicho si te funcionó lo que te indique. Espero que sí.

Por favor, si no tienes más que consultar sobre el tema, cierra la pregunta para que otros usuarios puedan consultarme.

Y no olvides valorarme bien si te ha servido de ayuda.

Muchas gracias por la ayuda. No sabía ni por donde empezar y me consta que era un poco complejo.

Gracias nuevamente, atentamente. M. José

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas