No problem Kerry.
Keep in mind that part of the code you won't see are the DoCmd.OpenQuery statements. Here I create the following two tables:
Table1: Unique ID field, Empty Memo field
Note this is a Memo field in case the
concatenation becomes > 255 (text max)
Table 2: This table will have all the ID's and their
associated values (say Names e.g.); so, before
beginning the routine develop the queries you
need to create:
Table1: ID Names (plural)
1 Null
2 "
3 "
4 ...and so on
Table2: ID Name (single)
1 Tom Smith
1 Linda Brown
1 Jerry Turner
2 George Little
3 Barry Summers
3 Genie Hartt
4 Mark Gicalone
4 Thomas Smith
5 ...and so on
Kerry; keep in mind that the one solution (I'll eventually dig it up in my references and forward to your email)offered by a programmer on Tek-Tips may be worth substituting here). It looked pretty good - stored the variables in a virtual table and then brought in the results. At any rate, you can compare later - the routine below, as I said, works just fine.
If you have any problems creating Table1 and Table2 let me know.
The code:
DoCmd.SetWarnings False 'turn off warnings
'create Table1
'create Table2
....
'now run horizontal population routine...
Dim dbs As Database
Dim rst, rst1 As Recordset
Dim temp_var, MyCriteria, MyBookmark As String
Dim Ct, i As Integer
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("Table2"

Ct = 0
rst.MoveFirst
Do
MyCriteria = rst("ID"

While Not rst.EOF
If rst("ID"

= MyCriteria Then
MyBookmark = rst.Bookmark
If Len(temp_var) < 1 Then
temp_var = rst("Name"

Else
temp_var = temp_var & ", " & rst("Name"

End If
End If
rst.MoveNext
Wend
Ct = Ct + 1
Set rst1 = dbs.OpenRecordset("Table1"

rst1.MoveFirst
If (Ct) > 1 Then
For i = 1 To Ct - 1
rst1.MoveNext
Next i
End If
rst1.Edit
rst1("Names"

= temp_var
rst1.Update
rst1.Close
temp_var = ""
rst.Bookmark = MyBookmark
rst.MoveNext
Loop Until rst.EOF
dbs.Close
End If
...if you have any problems post back.