PDA

Vollständige Version anzeigen : Zusammenfassungsabfrage


Andreas17
24.10.2003, 09:37
Hallo,

ich benutzte Access XP und habe ein Problem mit einer Auswahlabfrage.

Ich habe zwei Tabellen eine für Behälter und eine für Materialien die darin gelagert sind (Es gibt mehrere Materialien pro Behälter). Mit einer Auswahlabfrage (Zusammenfassungsabfrage) kann ich für jeden Behälter eine Summe der Zahlenfelder der betroffenen Materialien bilden - funktioniert soweit gut. Jetzt jabe ich aber das Problem, das ich auch die "Summe" eines textfeldes bräuchte - d.h. die Feldinhalte der einzelnen Datensätze sollen einfach hintereinander gehängt werden.
Wie geht das? Kann mir jemand helfen?

Danke im voraus.

Andreas

Nouba
24.10.2003, 09:47
wie sollte das Ergebnis exemplarisch aussehen? Vielleicht kannst Du ein Minimalbeispiel der DB mit Tabellen und Abfrage in den Anhang stellen?

Andreas17
24.10.2003, 10:10
Die Tabellen sehen so aus:

Tabelle Gebinde: ID Behältertyp Datum Behandlungstufe .........

Tabelle Anlieferung: ID Anlieferdatum Abfallart Volumen Gebinde-ID

Es können in einem Gebinde mehrere Anlieferungen enthalten sein. Wenn ich die Gesamteigenschaften jedes Gebindes abfragen will, kann ich für das Volumen (und weitere Zahlenfelder) einfach in der Abfrage die Summe bilden lassen. Die Abfallart ist aber ein Text, wie kann ich denn so aneinanderhängen (die Summe bilden) das es nacher für jedes Gebinde nur ein Abfallart-Feld gibt. Ich brauche das, da die Daten im anschluß in eine andere DB exportiert werden sollen, die Pro Gebinde nur eine Abfallart zuläst.

Nouba
24.10.2003, 10:43
Hallo,

Du könntest eine eigene Funktion in der Spalte verwenden und ind der Reihe Funktion Ausdruck auswählen.
Public Function ListeAbfallarten( _
ByVal vGebindeID As Long _
, Optional ByVal vTrennzeichen) As Variant

Dim rs As DAO.Recordset
Dim strSQL As String
Dim strResult As String

On Error GoTo Fehlerbehandlung

If IsMissing(vTrennzeichen) Then vTrennzeichen = ", "

strSQL = strSQL & "SELECT" & vbCrLf
strSQL = strSQL & " Abfallart" & vbCrLf
strSQL = strSQL & "FROM Anlieferung" & vbCrLf
strSQL = strSQL & "WHERE"
strSQL = strSQL & " [GEBINDE-ID] = " & vGebindeID & " And" & vbCrLf
strSQL = strSQL & " Abfallart Is Not Null" & vbCrLf
strSQL = strSQL & "GROUP BY Abfallart"

' Wenn Assistenten verwendet wurden, kann CurrentDB(0)(0) <> CurrentDB() sein
Set rs = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenDynaset, dbForwardOnly)

With rs
Do While Not .EOF
strResult = strResult & rs(0) & vTrennzeichen
.MoveNext
Loop
End With

If Len(strResult) Then
ListeAbfallarten = Left$(strResult, Len(strResult) - Len(vTrennzeichen))
End If

RausHier:
If Not rs Is Nothing Then rs.Close
Set rs = Nothing

On Error GoTo 0
Exit Function

Fehlerbehandlung:
MsgBox "Fehler: " & Err.Number & " (" & Err.Description & ") in Routine " _
& "ListeAbfallarten"
Resume RausHier
End Function

Andreas17
24.10.2003, 10:48
Vielen Dank, werde ich direkt ausprobieren