PDA

Vollständige Version anzeigen : Mehrfachauswahl in Liste per Abfrage??????


MartLoi
05.10.2001, 13:24
Hallo da draußen,

Ich möchte mittel eines Listenfeldes (Mehrfachauswahl) vom Anwender mehrere Zeilen (Liste enthält Kategorie-ID) auswählen lassen und nur die ausgewählten kategorien in einem Bericht ausgeben.
Alles kein Problem nur benötige ich für den Bericht unbedingt eine Abfrage (noch andere Kriterien)! Und die Mehrfachauswahl lässt sich nicht als Abfrage-Kriterium verwenden! Kann aber nicht mit VBA arbeiten, da ich ja noch die weitere Kritrerien habe!

Hat jemand vielleicht eine Idee wie ich das umsetzen könnte. Ich steh nämlich total auf dem Schlauch.
Kann ich vielleicht die Rückgabewerte der VBA-Prozedur mit ItemSelected, die mir die ID-Werte der gebundene Spalte liefert irgendwie in die Abfrage bekommen????
Wie gesagt hab echt keinen Schimmer wie das gehen könnte.

Vielleicht hat jemand einen Tip für mich!

Vielen Dank

Martina

RDiers
06.10.2001, 20:02
bitte sehen Sie sich die folgende Proc an (wenn Ihnen das Beispiel zu 'unleserlich' ist sende ich Ihnen gern das Formular mit dem Code zu. Bitte senden Sie mir (rdiers@t-online.de) dann eine email:

Private Sub Vorschau_Click()

Dim ctl As Control
Dim Element As Variant
Dim rst As Recordset
Dim dbs As DATABASE
Dim qdf As QueryDef
Dim AuswahlFlag As Boolean
Dim Zähler As Long
'Dim strBedingung As String
Dim strSQL As String
'Dim Anzahl As Integer


On Error GoTo Fehler

'DoCmd.Hourglass True

Set dbs = CurrentDb()

dbs.Execute "DELETE * FROM tblNamenfürEtikettenausgewählt"

Set rst = dbs.OpenRecordset("tblNamenfürEtikettenausgewählt")
Set ctl = Me!IstName
AuswahlFlag = False
Zähler = 0

For Each Element In ctl.ItemsSelected
Zähler = Zähler + 1
If ctl.ItemData(Element) = 0 Then '0 steht für "<Alle Mitglieder ausser>"
AuswahlFlag = True
Else
rst.AddNew
rst!Nr = ctl.ItemData(Element)
rst.Update
End If
ctl.Selected(Element) = False
Next

rst.Close

If Zähler = 0 Then AuswahlFlag = True 'nichts ausgewählt

If AuswahlFlag Then 'Alle außer den ausgewählten
strBedingung = "tblAdressen.Nr IN (SELECT tblAdressen.Nr FROM " & strBasisDaten & ") " _
& "AND tblAdressen.Nr NOT IN (SELECT Nr " _
& "FROM tblNamenfürEtikettenausgewählt)"

'MsgBox Me!IstName.RowSource
'MsgBox strBedingung

Else 'Nur die ausgewählten
strBedingung = "Nr IN (SELECT Nr FROM tblNamenfürEtikettenausgewählt)"
End If

'Anzahl der ausgewählten Listeneinträge ermitteln
'strSQL = "SELECT Count(Nr) AS Anzahl FROM tblAdressen WHERE " & strBedingung & ";"
'Set rst = dbs.OpenRecordset(strSQL)

'Me!Anzahl = rst!Anzahl & " ausgewählt"

rst.Close
Set dbs = Nothing

DoCmd.OpenReport "repEtikettenMitgliederFördererEhrengast", acViewPreview, , strBedingung
'DoCmd.Close acForm, "frmMitgliederAuswahl"

Exit Sub

Fehler:

If Err.Number = 2501 Then
'Resume Next 'Meldung .... Abbrechen docmd .... wird ignoriert
Else
Resume Next
MsgBox Err.Description
Exit Sub
End If

End Sub