Als Follow-on von dem, was @ krish-km erwähnt, ist hier eine Funktion, die ich von Allen Browne's ConcatRelated function angepasst haben (beachten Sie, dass ich eine Menge des ursprünglichen des Versorgers für allgemeine Zwecke entfernt haben, so sollten nur verwendet werden für Ihr spezifisches Szenario).
dies in einem VBA-Modul Setzen ...
Public Function ConcatRelated(strField1 As String, _
strField2 As String, _
strRelField As String, _
lngRelFieldVal As Long, _
strOrderBy As String, _
strTable As String, _
Optional strSeparator = ", ") As Variant
On Error GoTo Err_Handler
Dim db As DAO.Database ' Database
Dim rs As DAO.Recordset '
Dim strSql As String ' SQL statement
Dim strOut As String ' Output string to concatenate to.
Dim lngLen As Long ' Length of string.
' Initialize to Null
ConcatRelated = Null
' Find related records limited by related field
strSql = "SELECT " & strRelField & ", " & strField1 & ", " & strField2 _
& " FROM " & strTable & " WHERE " & strRelField & " = " & lngRelFieldVal _
& " ORDER BY " & strOrderBy
Set db = CurrentDb
Set rs = db.OpenRecordset(strSql)
' Loop through related fields to build comma separated list
Do While Not rs.EOF
strOut = strOut & rs.Fields(strField1) & ": " & rs.Fields(strField2) & strSeparator
rs.MoveNext
Loop
rs.Close
' Return the string without the trailing separator.
lngLen = Len(strOut) - Len(strSeparator)
If _
lngLen > 0 _
Then
ConcatRelated = Left(strOut, lngLen)
End If
Exit_Handler:
'Clean up
Set rs = Nothing
Set db = Nothing
Exit Function
Err_Handler:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbExclamation, "ConcatRelated()"
Resume Exit_Handler
End Function
Sie werden dann in der Lage sein, diese Funktion in einer SQL-Anweisung zu verwenden.
Das erste und das zweite Argument sind Ihre beiden Felder, die Sie in die durch Kommas getrennte Liste verketten möchten. Diese werden als Strings übergeben, also verwenden Sie doppelte Anführungszeichen. Das dritte und vierte Argument ist das Feld, dessen Wert für die Datensätze, die Sie zusammenzufassen versuchen, gleich ist (in Ihrem Fall ist es PipeID
). Beachten Sie, dass das Argument 3 in Anführungszeichen "PipeID"
und das Argument 4 das Feld sql-reference sein muss. Es muss also nicht in Anführungszeichen tblTvObservations.PipeID
stehen.
Das fünfte Argument ist das Feld, das Sie entweder in strField
oder strField2
angegeben haben und möchten, dass die kommagetrennte Liste nach geordnet werden soll.
Das sechste und letzte Argument ist der Name der Tabelle/Abfrage, woher diese Daten stammen.
Hier ist ein Beispiel davon in einer SQL-Abfrage verwendet ...
SELECT tblTvObservations.PipeID, ConcatRelated("TVObservation","NumberOf","PipeID",tblTvObservations.PipeID,"TVObservation","tblTvObservations") AS NumberOf
FROM tblTvObservations;
... das folgende Ergebnis zu erhalten:

Ich bin nicht sicher, ob dies möglich ist oder nicht, aber können Sie AS innerhalb einer Iif-Anweisung zurückgeben? So vielleicht: 'Graf (Iif ([TVObservation] =" FS "AS FS:, stimmt, IIf ([TVObservation] =" OB "AS OB:, Richtig, IIf (TVObservation) =" RB "AS RB: , True, Null)))) AS NumberOf' – FoolzRailer
Ich denke, Sie müssen dies neu formulieren. – Gustav
MS Access hat keine Gruppenverkettungsfunktion. Überprüfen Sie diesen Link für allans braune Lösung. http://allenbrowne.com/func-concat.html –