Access - ConcatenarCampo

 
Vista:

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ConcatenarCampo

Publicado por Chea (1015 intervenciones) el 05/01/2011 12:56:32
Seguramente la función te concatena correctamente y devuelve la variable en toda su longitud y luego, en el uso que hagas de la cadena devuelta será donde se limite, por ejemplo, porque la utilices en una consulta, en cuyo caso se limitará a 255 caracteres, o porque se la asignes a un campo con una longitud determinada.

Para ver si estoy en lo cierto, haz una prueba, pon al final de la función:

msgbox len(stRes)

Saludos
José Bengoechea Ibaceta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ConcatenarCampo

Publicado por Paco (5 intervenciones) el 05/01/2011 14:51:43
Antes de nada agradecer tu rápida respuesta.

He probado tal y como indicas y me da un error. 409 es hay donde quieres llegar a parar, la limitacion de acrarcteres en la consulta.

¿ Como lo podria hacer para que se limitase la con un recoreset directamente ?

Probare, ahora ando liado.

Un Saludo
Paco
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar