Tach ProfiLeutz,
folgendes Scenario:
Ich habe im einem Formular (frm_BerichtsGenerator) drei ListBoxen:
lst_Standort,
lst_Kategoieen (Mehrfachauswahl) und
lst_Zustand (Mehrfachauswahl)
mit d.Datenherkunft und GROUP BY von/im eine Abfrage (qry_BerichtsGenerator) mit mehreren Tabellen.
Screenshot 1 (https://1drv.ms/i/c/18fd78b551081696/IQAAMswJk5OmRJmevzxqboQlARRQFsKC8yL-XgKAVtZ5tqQ?e=4IytAB)
Jetzt, bei einem Klick auf dem "Bericht generieren" -Button, wird via:
Private Sub btn_Generieren_Click()
Dim strFilter As String
Dim varItem As Variant
Dim strKategorie As String
Dim strZustand As String
' ===== Standort (Einzelauswahl) =====
If Not IsNull(Me.lst_Standort) Then
strFilter = "[Standort] = '" & Me.lst_Standort & "'"
End If
' ===== Kategorie (Mehrfachauswahl) =====
If Me.lst_Kategorie.ItemsSelected.Count > 0 Then
For Each varItem In Me.lst_Kategorie.ItemsSelected
strKategorie = strKategorie & "'" & Me.lst_Kategorie.ItemData(varItem) & "',"
Next varItem
strKategorie = Left(strKategorie, Len(strKategorie) - 1)
If strFilter <> "" Then strFilter = strFilter & " AND "
strFilter = strFilter & "[Kategorie] IN (" & strKategorie & ")"
End If
' ===== Zustand (Mehrfachauswahl) =====
If Me.lst_Zustand.ItemsSelected.Count > 0 Then
For Each varItem In Me.lst_Zustand.ItemsSelected
strZustand = strZustand & "'" & Me.lst_Zustand.ItemData(varItem) & "',"
Next varItem
strZustand = Left(strZustand, Len(strZustand) - 1)
If strFilter <> "" Then strFilter = strFilter & " AND "
strFilter = strFilter & "[Zustand] IN (" & strZustand & ")"
End If
' ===== Bericht öffnen =====
If strFilter = "" Then
DoCmd.OpenReport "rpt_Auswertungs-Bericht", acViewPreview
Else
DoCmd.OpenReport "rpt_Auswertungs-Bericht", acViewPreview, , strFilter
End If
End Sub
...zwar eine "Berichts-Vorlage" (rpt_Auswertungs-Bericht) fehlerfrei geöffnet,
je doch ohne Daten.
Screenshot 2 (https://1drv.ms/i/c/18fd78b551081696/IQCPuvwj9cS3R5eBbIKglNgrAXGl6y2KrgpfGt-Qqq_uPpw?e=qM2e69)
Habt Ihr eine Idee, was ich dabei falsch machen könnte oder
noch dafür "veranstalten" muss?
Für eure Antworten bedanke mich im Voraus und mit LG *.crow
EDIT: wenn ich keinem Auswahl treffe, bzw. Auswahl Zurücksetze und auf Generieren klicke,
sodann wird das Bericht mit allen Datensätzen von der verbundene Abfrage dargestellt.
Ich würde mal sagen, da wird deine Where-Bedingung falsch sein, ein "Filter" ist das ja nicht. Überprüfe die Bedingung in dem du an geeigneter Stelle eine Breakpoint setzt oder dir den Inhalt von strFilter im Dirktfenster per Debug.Print ausgeben lässt.
Hat sich eigentlich dein anderer Thread erledigt? Du hast keine Rückmeldung gegeben. >:(
Zitat von: WhiteCrow am Mai 19, 2026, 13:48:55Habt Ihr eine Idee, was ich dabei falsch machen könnte
Für sich genommen sieht dein Code plausibel und korrekt aus.
Allerdings geht aus deinem Posting nicht hervor, welche Datentypen die relevanten Spalten (Standort, Kategorie, Zustand) haben. Dein Code ist für Text-Spalten ausgelegt, was eher unüblich wäre. Sinnvollerweise speichert man numerische Fremdschlüssel. Dann würden die Begrenzer (') um deine Kriterienwerte entfallen.
Guten Morgen,
@PhilS: Ja, das war's ja auch für Text und zwar mit Absicht geplant.
Nicht die ID Felder (Zahl), sondern dazugehörigen "Beschreibungsfelder" (Spalte2, als Text).
Gebe zu, ein wenig unlogisch aber... ich würde die Datenbank auch etwas anders aufbauen.
Hier (https://1drv.ms/i/c/18fd78b551081696/IQByrZoTXkytT5YfYPq2DDs3Ad5ByK22Jz4lDhQcxtnrboI) ein Screenshot wie die Tabellenbeziehungen für Abhänige-Kombinationsfelder aufgebaut wurden.
Kurz: Da die tblKategorie nicht in direkten Beziehung mit Haupttabelle (tbl_Inventur)
sondern über weitere (Inventar, usw.) steht, kommt zur einem Fehler bei jeden weiteren Auswahl (zweite ListBox).
Genauer: Standort-Auswahl Filterung funktioniert, <-bekomme Bericht über sämtliche Geräte in gewählten Standort,
aber jeder weitere Filterungs-Auswahl im Liste Kategorie, scheitert bereits.
Ich bekomme die zwar soweit "Optisch" dargestellt, werden aber am Bericht nicht "weiterreicht".
Wermute muss ich am der Abfrage weiter nachjustieren/schrauben (GROUP BY usw.).
ok, neue Abfrage erstellt und dem Code auf die IDs:
Private Sub btn_Generieren_Click()
Dim strWhere As String
Dim strKategorie As String
Dim strZustand As String
Dim varItem As Variant
'--------------------------------------------------
' Standort (Einzelauswahl)
'--------------------------------------------------
If Not IsNull(Me.lst_Standort) Then
strWhere = strWhere & "[id_Standort] = " & Me.lst_Standort & " AND "
End If
'--------------------------------------------------
' Kategorie (Mehrfachauswahl)
'--------------------------------------------------
For Each varItem In Me.lst_Kategorie.ItemsSelected
strKategorie = strKategorie & "," & Me.lst_Kategorie.ItemData(varItem)
Next varItem
If strKategorie <> "" Then
strKategorie = Mid(strKategorie, 2)
strWhere = strWhere & "[KategorieID] IN (" & strKategorie & ") AND "
End If
'--------------------------------------------------
' Zustand (Mehrfachauswahl)
'--------------------------------------------------
For Each varItem In Me.lst_Zustand.ItemsSelected
strZustand = strZustand & "," & Me.lst_Zustand.ItemData(varItem)
Next varItem
If strZustand <> "" Then
strZustand = Mid(strZustand, 2)
strWhere = strWhere & "[id_Zustand] IN (" & strZustand & ") AND "
End If
'--------------------------------------------------
' Letztes AND entfernen
'--------------------------------------------------
If Right(strWhere, 5) = " AND " Then
strWhere = Left(strWhere, Len(strWhere) - 5)
End If
'--------------------------------------------------
' Bericht öffnen
'--------------------------------------------------
DoCmd.OpenReport "rpt_Auswertungs-Bericht", acViewPreview, , strWhere
End Sub...umgeschaltet.
Jetzt sitzt, passt und reicht wie es soll weiter.
Danke sehr für Dein Gedankenstoß!