Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Mehrfachauswahl

Begonnen von MKI, April 11, 2015, 13:18:06

⏪ vorheriges - nächstes ⏩

MKI

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

MaggieMay

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.
Freundliche Grüße
MaggieMay

MKI

Hallo MaggieMay,

Danke für deine Hilfe. So klappt es auf jeden Fall.
Gruß Michael :)

el_gomero

Hallo,

warum hast du nicht verraten, dass dir schon geholfen wurde?

http://forum.freeaccess.de/YaBB.pl?num=1428830728

Crossposting ist unerwünscht  >:(
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen