Gustav Brock
Gustav at cactus.dk
Wed Dec 7 05:17:22 CST 2005
Hi David Or adjust this variation with a saved query which I posted recently: Here's a variation where you save the SQL to look up the Qualifications in a separate query assuming that your primary key, VolNum, is a number: PARAMETERS lngKey Long; SELECT QualificationCode FROM tblQualifications WHERE VolNum = lngKey ORDER BY QualificationCode; Save this as, say, qdyQualifications. Now, adjust you main query to include the function below to look something like this: SELECT *, ConcatenateRecords('qdyQualifications',[VolNum],'QualificationCode',', ') FROM tblVolunteers; /gustav <code> Public Function ConcatenateRecords( _ ByVal strSource As String, _ ByVal lngKey As Long, _ ByVal strField As String, _ Optional ByVal strSeparator As String = ";") _ As String ' Concatenates values from one field (strField) from all ' records in query strSource using parameter value lngKey. ' Values are separated by strSeparator. ' Default output like: ' 34;56;34;67;234 ' ' 1999-10-12. Cactus Data ApS, CPH Dim dbs As DAO.Database Dim qdf As DAO.QueryDef Dim rst As DAO.Recordset Dim fld As DAO.Field Dim booPluralis As Boolean Dim strFields As String On Error GoTo Err_ConcatenateRecords Set dbs = CurrentDb() If Len(strSource) > 0 And Len(strField) > 0 Then Set qdf = dbs.QueryDefs(strSource) qdf.Parameters(0) = lngKey Set rst = qdf.OpenRecordset() Set fld = rst.Fields(strField) With rst While Not .EOF If booPluralis = True Then ' There is more than one record. ' Add separator. strFields = strFields & strSeparator End If strFields = strFields & Trim(fld.value) booPluralis = True .MoveNext Wend .Close End With Set fld = Nothing Set rst = Nothing Set qdf = Nothing End If Set dbs = Nothing ConcatenateRecords = strFields Exit_ConcatenateRecords: Exit Function Err_ConcatenateRecords: MsgBox "Error " & Err.Number & ". " & Err.Description Resume Exit_ConcatenateRecords End Function </code>