A.D.TEJPAL
adtp at airtelbroadband.in
Wed Nov 14 07:09:34 CST 2007
John,
User defined function is found more convenient for such a situation. Sample query Q_Results, as given below, making use of function Fn_SurveyResults() given below, should get the desired results.
PersonID, Qn and Ans are the fields (all text type) in table T_Survey.
Best wishes,
A.D.Tejpal
------------
Q_Results
==================================
SELECT T_Survey.PersonID, Fn_SurveyResults([PersonID]) AS SurveyResult
FROM T_Survey
GROUP BY T_Survey.PersonID;
==================================
Fn_SurveyResults()
'==================================
Function Fn_SurveyResults(Pid _
As String) As String
Dim Qst As String, Txt As String
Dim rst As DAO.Recordset
Qst = "SELECT Qn, Ans " & _
"FROM T_Survey " & _
"WHERE PersonID = '" & _
Pid & "' ORDER BY Qn;"
Set rst = DBEngine(0)(0).OpenRecordset(Qst)
' Note - For repeated calls from a query,
' DBEngine(0)(0) is preferred over
' CurrentDb
Txt = ""
Do Until rst.EOF
Txt = Txt & ", [" & rst.Fields("Qn") & _
" - " & rst.Fields("Ans") & "]"
rst.MoveNext
Loop
' Get rid of leading comma if any
If Len(Txt) > 0 Then
Txt = Mid(Txt, 3)
End If
Fn_SurveyResults = Txt
rst.Close
Set rst = Nothing
End Function
'==================================
----- Original Message -----
From: jwcolby
To: 'Access Developers discussion and problem solving' ; dba-sqlserver at databaseadvisors.com
Sent: Tuesday, November 13, 2007 18:23
Subject: [AccessD] merging records
I have tables of information about people. The tables represent polls that
people have taken, so if a person takes a poll about brands of cigarettes
smoked, the table would have a record about that person for that poll. If
that same person took a poll about software used, the table would have a NEW
record with information about the same person, but about the software that
person used. And so forth and so on. Now I need to "roll up" all of the
information about a person into a single record so that one record contains
all of the information about that person contained in all of the records
about that person in the table.
Is this possible directly in SQL? Do I need to write code to iterate
through the table finding each person and all the records for that person,
and then consolidating the information from the second and subsequent
records into the first record found?
John W. Colby
Colby Consulting
www.ColbyConsulting.com