S
shank
In the below query, I'm trying to Concatenate 3 fields using Duane Hookom's
function. It works, but for some reason, it's cutting off data at the 255
character limit. First, I tried MAKE a table. Then I tried appending to a
table TCS with tts being a Memo field. Same difference. Character limit gets
whacked to 255 characters. What am I doing wrong here? thanks!
INSERT INTO TCS ( od, tts )
SELECT [nit].od, Concatenate("SELECT [sk] & '. ' & [tts] & ' ... ' & [ats]
FROM [nit] WHERE [nit]![od] ='" & [ssc]![od] & "' ORDER BY sk",Chr(13) &
Chr(10)) AS tts
FROM [nit] INNER JOIN [ssc] ON [nit].od = [ssc].od
GROUP BY [nit].od, Concatenate("SELECT [sk] & '. ' & [tts] & ' ... ' & [ats]
FROM [nit] WHERE [nit]![od] ='" & [ssc]![od] & "' ORDER BY sk",Chr(13) &
Chr(10))
ORDER BY [nit].od;
=====================
Function Concatenate(pstrSQL As String, _
Optional pstrDelim As String = ", ") _
As String
'Created by Duane Hookom, 2003
'this code may be included in any application/mdb providing
' this statement is left intact
'example
'tblFamily with FamID as numeric primary key
'tblFamMem with FamID, FirstName, DOB,...
'return a comma separated list of FirstNames
'for a FamID
' John, Mary, Susan
'in a Query
'SELECT FamID,
'Concatenate("SELECT FirstName FROM tblFamMem
' WHERE FamID =" & [FamID]) as FirstNames
'FROM tblFamily
'
'======For DAO uncomment next 4 lines=======
'====== comment out ADO below =======
'Dim db As DAO.Database
'Dim rs As DAO.Recordset
'Set db = CurrentDb
'Set rs = db.OpenRecordset(pstrSQL)
'======For ADO uncomment next two lines=====
'====== comment out DAO above ======
Dim rs As New ADODB.Recordset
rs.Open pstrSQL, CurrentProject.Connection, _
adOpenKeyset, adLockOptimistic
Dim strConcat As String 'build return string
With rs
If Not .EOF Then
.MoveFirst
Do While Not .EOF
strConcat = strConcat & _
.Fields(0) & pstrDelim
.MoveNext
Loop
End If
.Close
End With
Set rs = Nothing
'====== uncomment next line for DAO ========
'Set db = Nothing
If Len(strConcat) > 0 Then
strConcat = Left(strConcat, _
Len(strConcat) - Len(pstrDelim))
End If
Concatenate = strConcat
End Function
function. It works, but for some reason, it's cutting off data at the 255
character limit. First, I tried MAKE a table. Then I tried appending to a
table TCS with tts being a Memo field. Same difference. Character limit gets
whacked to 255 characters. What am I doing wrong here? thanks!
INSERT INTO TCS ( od, tts )
SELECT [nit].od, Concatenate("SELECT [sk] & '. ' & [tts] & ' ... ' & [ats]
FROM [nit] WHERE [nit]![od] ='" & [ssc]![od] & "' ORDER BY sk",Chr(13) &
Chr(10)) AS tts
FROM [nit] INNER JOIN [ssc] ON [nit].od = [ssc].od
GROUP BY [nit].od, Concatenate("SELECT [sk] & '. ' & [tts] & ' ... ' & [ats]
FROM [nit] WHERE [nit]![od] ='" & [ssc]![od] & "' ORDER BY sk",Chr(13) &
Chr(10))
ORDER BY [nit].od;
=====================
Function Concatenate(pstrSQL As String, _
Optional pstrDelim As String = ", ") _
As String
'Created by Duane Hookom, 2003
'this code may be included in any application/mdb providing
' this statement is left intact
'example
'tblFamily with FamID as numeric primary key
'tblFamMem with FamID, FirstName, DOB,...
'return a comma separated list of FirstNames
'for a FamID
' John, Mary, Susan
'in a Query
'SELECT FamID,
'Concatenate("SELECT FirstName FROM tblFamMem
' WHERE FamID =" & [FamID]) as FirstNames
'FROM tblFamily
'
'======For DAO uncomment next 4 lines=======
'====== comment out ADO below =======
'Dim db As DAO.Database
'Dim rs As DAO.Recordset
'Set db = CurrentDb
'Set rs = db.OpenRecordset(pstrSQL)
'======For ADO uncomment next two lines=====
'====== comment out DAO above ======
Dim rs As New ADODB.Recordset
rs.Open pstrSQL, CurrentProject.Connection, _
adOpenKeyset, adLockOptimistic
Dim strConcat As String 'build return string
With rs
If Not .EOF Then
.MoveFirst
Do While Not .EOF
strConcat = strConcat & _
.Fields(0) & pstrDelim
.MoveNext
Loop
End If
.Close
End With
Set rs = Nothing
'====== uncomment next line for DAO ========
'Set db = Nothing
If Len(strConcat) > 0 Then
strConcat = Left(strConcat, _
Len(strConcat) - Len(pstrDelim))
End If
Concatenate = strConcat
End Function