Tipps "n" Tricks
Anwender-Software - Access

Last Update: 24. Dezember 2001/Webmaster

Zusätzlicher Eintrag <Alle> in Auswahllisten

Thema:

Access 97, 2000 und 2002
  In Formularen setzen Sie häufig Kombinationsfelder ein, über die Sie die in einem Unterformular anzuzeigenden Datensätze filtern. Der Anwender kann beispielsweise mit Hilfe einer Liste von Ländern nach Auswahl von "Belgien" nur die Datensätze von Kunden im Unterformular anzeigen lassen, die ihren Sitz in Belgien haben. Für den Aufbau dieser Liste können zwar alle Länder aus der betreffenden Tabelle selektiert und doppelte Einträge über eine Gruppierung aussortiert werden, ein eigener Eintrag "<Alle>", über den der Anwender wieder auf die Anzeige des gesamten Datenbestandes zurückschalten kann, lässt sich allerdings nicht hinzufügen.

Eine wie im folgenden Beispiel aufgebaute Union-Abfrage, die Sie der Auswahlliste anstelle der bisherigen Abfrage zuordnen, löst dieses Problem:

select "<Alle>" as Land from Kunden
UNION select Land from Kunden
ORDER BY Land;


Wird in Union-Abfragen anstelle eines Feldnamens eine Konstante wie "<Alle>" angegeben und mit dem "As"-Operator kombiniert, ist das Ergebnis dieser "Select"-Anweisung ein einzelner Datensatz mit dem Feld gemäss "As"-Operator (hier also "Land"), das den Inhalt der Konstanten (hier also "<Alle>") hat - die angegebene Tabelle bzw. die "From"-Klausel wird in solchen Fällen ignoriert. Die zweite "Select"-Anweisung selektiert dann alle Ländernamen aus dem Feld "Land" der Tabelle. Da eine Union-Abfrage die Datensätze automatisch bereinigt, gibt es keine Duplikate.

Über die Ereignisprozedur "Nach Aktualisierung" des betreffenden Kombinationsfeldes erfolgt die Prüfung der Auswahl und die Filterung des Formulars beispielsweise wie folgt:

Private Sub clLand_AfterUpdate()
  Dim strAuswahl As String

  strAuswahl = Me.clLand
  If strAuswahl = "<Alle>" Then
    Me.Filter = ""
    Me.FilterOn = False
  Else
    Me.Filter = "[Land]= '" & strAuswahl & "'"
    Me.FilterOn = True
  End If

End Sub

Wurde der Eintrag "<Alle>" ausgewählt, wird hier der Filter zurückgesetzt und die Filterung für das Formular ausgeschaltet. Jede andere Auswahl führt dazu, dass der Filter auf das betreffende Land gesetzt und die Filterung aktiviert wird.

 

Tipps "n" Tricks
Anwender-Software - Access