Gustav Brock
gustav at cactus.dk
Tue Jun 24 12:25:07 CDT 2003
Hi Martin
> Have two tables
> Table A Contains staff data, Name etc
> Table B contains contact data
> Results of join as expected
> Staff Member A Telephone Number 1
> Staff Member A Telephone Number 2
> Staff Member A Telephone Number 3
> And so on
> What I need to do is to flatten this out and create a single table
> Staff Member A Phone Number 1 Phone Number 2 Phone Number 3 etc
> Staff Member B Phone Number 1 Phone Number 2
> We dont knwo how many numbers will exist for each member of staff but the Max will be 5 and I must end up with a single table containing the data.
> Need this to work in Access and SQL Server 2000
For Access you'll have to write a function which for each Staff record
loops through the Contact records.
Here's an example of the essential part (taken from a report, thus
you'll have to modify it for writing/updating a table but you'll sure
get the picture). The ID is lngID:
<snip>
strSQL = vbNullString
strSQL = strSQL + "SELECT Phone "
strSQL = strSQL + "FROM tblContacts "
strSQL = strSQL + "WHERE (ID = " & lngID & ") "
strSQL = strSQL + "ORDER BY Phone;"
Set rst = dbs.OpenRecordset(strSQL)
If rst.RecordCount = 0 Then
' Should not happen.
Else
' Count records.
lngRecords = rst.RecordCount
rst.MoveFirst
If lngRecords = 1 Then
strPhone = "Telephone number: "
Else
strPhone = "Telephone numbers: "
End If
For lngLoop = 1 To lngRecords
' Build line with phone numbers.
strPhone = strPhone & rst!Phone
If lngLoop = lngRecords Then
strPhone = strPhone & "."
Else
strPhone = strPhone & ", "
End If
rst.MoveNext
Next lngLoop
End If
rst.Close
Set rst = Nothing
Set dbs = Nothing
strPhoneNumbers = strPhone
</snip>