|
Access-Abfragen sind nicht nur praktisch, um sich ganz bestimmte
Informationen in tabellarischer Form ausgeben zu lassen. Genauso gut
eignen sie sich auch als Grundlage für Formulare. So können Sie
beispielsweise Daten aus verschiedenen Tabellen in einer Abfrage
zusammenfassen und das Ergebnis übersichtlich in einem Formular
betrachten.
Häufig dienen Abfragen aber auch zum Filtern von Tabellendaten,
wobei Parameterabfragen besonders flexibel sind. Als
Abfragekriterium tragen Sie dann einfach einen Parameternamen Ihrer
Wahl ein, woraufhin Sie beim nächsten Öffnen der Abfrage nach dem
gewünschten Wert für den Parameter gefragt werden. So schränken
Sie das Ergebnis der Abfrage individuell auf bestimmte Datensätze
ein.
Eine solche Funktionalität wäre in Formularen hilfreich, um zum
Beispiel die angezeigten Datensätze vom Inhalt eines
Kombinationsfeldes abhängig zu machen. Sie brauchen dann eine Möglichkeit,
den Wert im Kombinationsfeld als Parameter an die Abfrage zu übergeben.
Das ist einfacher als Sie denken, denn es genügt, den genauen
Bezeichner (Namen) des Kombinationsfeldes als Kriterium in die
Abfrage zu schreiben. Schauen Sie sich folgendes Beispiel an:
Nehmen Sie an, Sie hätten eine umfangreiche Adressenliste und Sie
wollten die Datensätze anhand der Postleitzahl auf einen bestimmten
Personenkreis eingrenzen. Das Ganze wollen Sie sich in einem
Formular anschauen, wobei Sie die einschränkende Postleitzahl mit
Hilfe eines Kombinationsfeldes auswählen möchten.
Dazu legen Sie im ersten Schritt eine Abfrage an, in die Sie alle
Felder aus der Adressentabelle einschliessen, die im Formular
erscheinen sollen. Danach speichern Sie die Abfrage unter dem Namen
"qryPLZAuswahl". Als nächstes richten Sie das Formular
ein, was Sie am schnellsten mit Hilfe der AutoFormular-Funktion auf
Basis der Abfrage "qryPLZAuswahl" erreichen.
Um das Kombinationsfeld zur Auswahl des Postleitzahlbereichs
einzufügen, schalten Sie das Formular dann in die Entwurfsansicht.
Das Feld selbst müssen Sie als "ungebundenes"
Steuerelement in den Formularkopf setzen. Falls dieser Bereich nicht
angezeigt wird, aktivieren Sie im Menü Ansicht
den Befehl Formularkopf/-Fuss,
oder passen Sie die Höhe des Bereichs mit der Maus an. Fügen Sie
ein Kombinationsfeld ein, wobei Sie den Assistenten gegebenenfalls
abbrechen. Lassen Sie sich anschliessend die Eigenschaften des
Steuerelements anzeigen und weisen Sie ihm einen Namen zu, hier
beispielsweise "cmbPLZAuswahl".
Damit in dem Auswahlfeld nur die vorhandenen Postleitzahlen
angezeigt und diese jeweils nur einmal aufgeführt werden, tippen
Sie in das Eigenschaftenfeld "Datensatzherkunft" folgende
SQL-Anweisung:
SELECT Adressen.PLZ FROM Adressen GROUP BY
Adressen.PLZ ORDER BY Adressen.PLZ;
Die Anweisung geht davon aus, dass die Tabelle mit den
Adressinformationen "Adresse" und das Postleitzahlfeld
"PLZ" heissen.
Wechseln Sie nun mit Ansicht-Code
in das Codefenster des Formulars. Darin tragen Sie folgende Prozedur
ein:
Private Sub cmbPLZAuswahl_Change()
Me.Requery
End Sub
Die Routine sorgt dafür, dass das Formular nach Auswahl eines
anderen Kombinationsfeld-Eintrags aktualisiert wird.
Damit sind die Vorbereitungen im Formular abgeschlossen, so dass Sie
es nur noch speichern müssen. Schliessen Sie den Formularentwurf
und speichern Sie das Objekt in diesem Fall unter dem Namen "frmPLZBereiche".
Was fehlt, ist das passende Kriterium in der Abfrage, die dem
Formular zugrunde liegt. Öffnen Sie also die Abfrage "qryPLZAuswahl"
in der Entwurfsansicht und suchen Sie die Spalte mit dem
Postleitzahlfeld. Falls Sie das Feld nicht in den Abfrageentwurf
eingeschlossen haben, ergänzen Sie es jetzt. In die Kriterienzeile
des Feldes geben Sie dann folgendes ein:
[Forms]![frmPLZBereiche]![cmbPLZAuswahl]
Das ist der vollständige Name des Kombinationsfeldes mit der
Postleitzahlauswahl. Somit liefert die Abfrage immer die
Datensätze, deren Postleitzahl mit dem Wert im Kombinationsfeld
übereinstimmt. Auf diese Weise können Sie jedes Formularfeld als
Abfragekriterium einsetzen. Sie müssen lediglich den kompletten
Namen als Feldkriterium eintragen, und zwar in folgender Syntax:
[Forms]![<Formularname>]![<Steuerelementname>]
Zum Testen schliessen und speichern Sie den Abfrageentwurf, um
anschliessend das zuvor erstellte Formular zu öffnen. Anfangs wird
kein Datensatz angezeigt, da das Kombinationsfeld leer ist. Wenn Sie
aber eine Postleitzahl auswählen, aktualisiert Access das Formular
und es erscheinen alle übereinstimmenden Datensätze.
|