|
|
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. |
|