News

FAQ Access – Flexible Datenselektion über Kombinationsfeld

Category:

Access, FAQ

0

Access Formulare – Flexible Datenselektion über Kombinationsfeld

Problem : Abhängigkeiten vom Combo

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:

Lösung :

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 einschließen, die im Formular erscheinen sollen. Danach speichern Sie die Abfrage unter dem Namen „QBPLZAuswahl“. Als nächstes richten Sie das Formular ein, was Sie am schnellsten mit Hilfe der AutoFormular-Funktion auf Basis der Abfrage „QBPLZAuswahl“ 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 anschließend die Eigenschaften des Steuerelements anzeigen und weisen Sie ihm einen Namen zu, hier beispielsweise „PLZAuswahl“.

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 TBADRESSEN.PLZ FROM TBADRESSEN
GROUP BY TBADRESSEN.PLZ ORDER BY TBADRESSEN.PLZ;

Die Anweisung geht davon aus, dass die Tabelle mit den Adressinformationen „TBADRESSEN“ und das Postleitzahlfeld „PLZ“ heißen.
Wechseln Sie nun mit Ansicht-Code in das Codefenster des Formulars. Darin tragen Sie folgende Prozedur ein:

Private Sub PLZAuswahl_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. Schließen Sie den Formularentwurf und speichern Sie das Objekt in diesem Fall unter dem Namen

FOPLZBereiche.

Was fehlt, ist das passende Kriterium in der Abfrage, die dem Formular zugrunde liegt. Öffnen Sie also die Abfrage „QBPLZAuswahl“ 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:

[Formulare]![FOPLZBereiche]![PLZAuswahl]

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:

[Formulare]![Formularname]![Steuerelementname]

Zum Testen schließen und speichern Sie den Abfrageentwurf, um anschließend 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.

Tags: ,

Leave a Reply

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.