Hallo, bin ganz neu hier.
Habe ein Formular mit 2 Listenfeldern [Mehrfachauswahl] (Verkäufer und Geschäftsbereich).
Über die jeweilige Auswahl soll dann ein Bericht erstellt werden.
Wähle ich z.B. aus dem Mehrfachfeld Verkäufer einen oder mehrere aus, dann wird mir der Bericht korrekt dargestellt. Bericht wird mir gruppiert nach Verkäufern angezeigt.
Meine Frage und Problem:
Neben der Auswahl der Verkäufer möchte ich nun auch wahlweise einen oder mehrere Geschäftsbereiche auswählen. Wie muss ich dann den u.g. Code für das 2. Feld erweitern.
Vielen Dank schon einmal für die Hilfe. Gruß Michael
Private Sub btnOpenReport_Click()
Dim strFilter As String, varElement As Variant
Const cstrField = "Verkäufer"
If Me.lstKunden.itemsSelected.Count = 0 Then
Beep
Exit Sub
End If
strFilter = ""
For Each varElement In Me.lstKunden.itemsSelected
If strFilter <> "" Then '" or " Anhängen
strFilter = strFilter + " or "
End If
strFilter = strFilter & "[" & cstrField & "] = '" & Me.lstKunden.ItemData(varElement) & "'"
Next
DoCmd.OpenReport "VBA_Bericht", acViewPreview, , strFilter
End Sub
Hi,
dein Listenfeld heißt "lstKunden", aber du schreibst dass du nach Verkäufern suchen willst.
Eine sinnvolle Namensgebung und nachvollziehbare Problemdarstellung wären wohl hilfreich.
Davon abgesehen könnte dein Problem bspw. folgendermaßen gelöst werden:
Private Sub btnOpenReport_Click()
Dim strFlt1 As String, strFlt2 As String, varElement As Variant
Dim strFilter As String
If Me.lstVerkaeufer.ItemsSelected.Count = 0 And _
Me.lstGeschaeftsbereiche.ItemsSelected.Count = 0 Then
MsgBox "Bitte zuerst die Verkäufer oder Geschäftsbereiche auswählen!"
Else
' 1. Verkäufer
For Each varElement In Me.lstVerkaeufer.ItemsSelected
strFlt1 = strFlt1 & " OR [Verkäufer] = '" & Me.lstVerkaeufer.ItemData(varElement) & "'"
Next
' 2. Geschäftsbereiche
For Each varElement In Me.lstGeschaeftsbereiche.ItemsSelected
strFlt2 = strFlt2 & " OR [Geschaeftsbereich] = '" & Me.lstGeschaeftsbereiche.ItemData(varElement) & "'"
Next
' 1. "OR" ausschneiden
If Len(strFlt1) > 0 Then stzrFlt1 = Mid(strFlt1, 5)
If Len(strFlt2) > 0 Then stzrFlt2 = Mid(strFlt2, 5)
' Filter kombinieren
If Len(strFlt1) > 0 Then strFilter = "(" & strfilt1 & ")"
If Len(strFlt2) > 0 Then
If Len(strFilter) > 0 Then strFilter = strFilter & " And "
strFilter = strFilter & "(" & strfilt2 & ")"
End
DoCmd.OpenReport "VBA_Bericht", acViewPreview, , strFilter
End If
End Sub
BTW:
Du suchst nach Texten, solltest aber besser nach den (numerischen) IDs, also den Datensatzschlüsseln suchen.
Hallo MaggieMay,
Danke für deine Hilfe. So klappt es auf jeden Fall.
Gruß Michael :)
Hallo,
warum hast du nicht verraten, dass dir schon geholfen wurde?
http://forum.freeaccess.de/YaBB.pl?num=1428830728
Crossposting ist unerwünscht >:(