ConcatenarCampo
Publicado por Paco (5 intervenciones) el 05/01/2011 11:20:45
Hola:
Primero decir que estoy utilizando la function ConcatenarCampo que a continuación indico en una consulta.
RegistrosUnidos:ConcatenarCampo("Concep";"[QryFactTrue]";"[QryFactTrue].TabExp_Identidad = " & [QryFactTrue].[TabExp_Identidad];"*")
Como podéis observar los registros que une, en un mismo campo, son aquellos que tienen el campo TabExp_Identidad “COMUN”. Hasta aquí todo es correcto, significar también que el campo concep está limitado solo a cuarenta caracteres.
Pues bien mi cuestión es que si la cadena que se concatena supera un número determinado de caracteres automáticamente queda cortada, es decir me concatena un número limitado de caracteres independientemente del número de registros a concatenar.
No sé si me he explicado bien si alguien sabe cual es el problema o una function que no limite la concatenación.
NOTA: La function que utilizo es la siguiente:
Public Function ConcatenarCampo(NombreCampo As String, _
nombretabla As String, _
Optional Criterio As String = "", _
Optional Separador As String = " ") As String
Dim rst As DAO.Recordset
Dim StrSql As String
Dim strSep As String
Dim strRes As String
If Nz(NombreCampo, "") <> "" Then
If Nz(nombretabla, "") <> "" Then
StrSql = "SELECT " & NombreCampo
StrSql = StrSql & " FROM " & nombretabla
If Nz(Criterio, "") <> "" Then
StrSql = StrSql & " WHERE " & Criterio
End If
strSep = Nz(Separador, "")
Set rst = CurrentDb.OpenRecordset(StrSql)
With rst
If (Not .EOF) And (Not .BOF) Then
Do While Not .EOF
strRes = strRes & .Fields(0)
.MoveNext
If Not .EOF Then
strRes = strRes & strSep
End If
Loop
End If
End With
End If
End If
ConcatenarCampo = strRes
End Function
Primero decir que estoy utilizando la function ConcatenarCampo que a continuación indico en una consulta.
RegistrosUnidos:ConcatenarCampo("Concep";"[QryFactTrue]";"[QryFactTrue].TabExp_Identidad = " & [QryFactTrue].[TabExp_Identidad];"*")
Como podéis observar los registros que une, en un mismo campo, son aquellos que tienen el campo TabExp_Identidad “COMUN”. Hasta aquí todo es correcto, significar también que el campo concep está limitado solo a cuarenta caracteres.
Pues bien mi cuestión es que si la cadena que se concatena supera un número determinado de caracteres automáticamente queda cortada, es decir me concatena un número limitado de caracteres independientemente del número de registros a concatenar.
No sé si me he explicado bien si alguien sabe cual es el problema o una function que no limite la concatenación.
NOTA: La function que utilizo es la siguiente:
Public Function ConcatenarCampo(NombreCampo As String, _
nombretabla As String, _
Optional Criterio As String = "", _
Optional Separador As String = " ") As String
Dim rst As DAO.Recordset
Dim StrSql As String
Dim strSep As String
Dim strRes As String
If Nz(NombreCampo, "") <> "" Then
If Nz(nombretabla, "") <> "" Then
StrSql = "SELECT " & NombreCampo
StrSql = StrSql & " FROM " & nombretabla
If Nz(Criterio, "") <> "" Then
StrSql = StrSql & " WHERE " & Criterio
End If
strSep = Nz(Separador, "")
Set rst = CurrentDb.OpenRecordset(StrSql)
With rst
If (Not .EOF) And (Not .BOF) Then
Do While Not .EOF
strRes = strRes & .Fields(0)
.MoveNext
If Not .EOF Then
strRes = strRes & strSep
End If
Loop
End If
End With
End If
End If
ConcatenarCampo = strRes
End Function
Valora esta pregunta
0