Credo che si possa risolvere scrivendo la seguente query
SELECT turni.data, turni.turno, turni.attività, CreaElencoNominativi([data],[turno],[attività]) AS Nominativo
FROM turni
GROUP BY turni.data, turni.turno, turni.attività;
e la seguente funzione pubblica CreaElencoNominativi
Public Function CreaElencoNominativi(datData As Date, strTurno As String, strAttività As String) As String
Dim rs As DAO.Recordset
Dim strSql As String
On Error GoTo Errore
strSql = "SELECT turni.nominativo FROM turni WHERE turni.data = " & CLng(datData) & " AND turni.turno = """ & strTurno & """ AND turni.attività = """ & strAttività & """"
Set rs = CurrentDb.OpenRecordset(strSql, dbOpenDynaset)
Do While Not rs.EOF
CreaElencoNominativi = CreaElencoNominativi & ", " & rs!nominativo
rs.MoveNext
Loop
CreaElencoNominativi = mid(CreaElencoNominativi,3)
ExitErrore:
Set rs = Nothing
Exit Function
Errore:
MsgBox "Errore " & Err.Number & ": " & Err.Description, vbExclamation, "Concatenazione dati"
Resume ExitErrore
End Function