Home > Artikel > Ausgabe 11/2012 > Dynamische Datenherkunft mit Formularbezug

Dynamische Datenherkunft mit Formularbezug

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Sicher haben Sie bereits einige Abfragen erstellt und als Datenherkunft von Formularen, Berichten oder Steuerelementen eingesetzt. Solange das jeweilige Element alle Datensätze der zugrunde liegenden Abfrage anzeigen soll, ist dies einfach. Wenn Sie die Daten jedoch zur Laufzeit nach bestimmten Kriterien filtern möchten, gibt es zahlreiche Möglichkeiten, dies zu tun. Dieser Artikel stellt einige davon vor.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1211_DynamischeDatenherkunftMitFormularbezug.mdb.

Artikel filtern

Im ersten Beispiel sollen die Daten der Tabelle tblArtikel in einem Unterformular in der Datenblattansicht angezeigt werden. Um die Datensätze nach dem Artikelnamen zu filtern, enthält das Hauptformular ein Textfeld namens txtArtikelsuche. Wenn der Benutzer einen Text in dieses Feld eingegeben und die Schaltfläche cmdSuchen angeklickt hat, soll das Unterformular nur noch die passenden Datensätze anzeigen.

Dazu erstellen Sie zunächst ein geeignetes Unterformular. Diesem weisen Sie zuerst die Tabelle tblArtikel als Datenherkunft zu, damit Sie die Felder der Tabelle aus der Feldliste in den Formularentwurf ziehen können.

Das Ergebnis sieht etwa wie in Bild 1 aus. Stellen Sie außerdem die Eigenschaft Standardansicht des Formulars auf Datenblatt ein. Speichern Sie das Formular unter dem namen sfmArtikelsuche und schließen Sie es.

Zu filterndes Unterformular

Bild 1: Zu filterndes Unterformular

Nun erstellen Sie das Hauptformular frmArtikelsuche. Fügen Sie diesem ein Textfeld namens txtArtikelsuche hinzu sowie eine Schaltfläche namens cmdSuchen.

Diese Schaltfläche soll den Inhalt des Unterformulars aktualisieren. Dazu hinterlegen Sie für das Ereignis Beim Klicken die folgende Prozedur (Klick auf die Eigenschaft Beim Klicken, Auswahl von [Ereignisprozedur], Klick auf die Schaltfläche mit den drei Punkten):

Private Sub cmdSuchen_Click()

     Me!sfmArtikelsuche.Form.Requery

End Sub

Ziehen Sie außerdem das Unterformular sfmArtikelsuche aus dem Datenbankfenster beziehungsweise aus dem Navigationsbereich in den Detailbereich des Entwurfs des Formulars frmArtikelsuche. Das Ergebnis sieht wie in Bild 2 aus.

Haupt- und Unterformular in der Entwurfsansicht

Bild 2: Haupt- und Unterformular in der Entwurfsansicht

Schließlich stellen Sie die Eigenschaften Datensatzmarkierer, Navigationsschaltflächen, Trennlinien und Bildlaufleisten des Hauptformulars auf Nein und Automatisch zentrieren auf Ja ein.

Datenherkunft anpassen

Nun passen Sie die bislang statische Datenherkunft des Unterformulars an. Dies können Sie gleich über die Entwurfsansicht das Hauptformulars erledigen. Klicken Sie zwei Mal oben links im Unterformular auf den Schnittpunkt der beiden Lineals, um das Unterformular zu markieren. Der erste Klick aktiviert das Unterformular-Steuerelement, der zweite das darin enthaltene Unterformular.

Aktivieren Sie das Eigenschaftsfenster und wechseln Sie zur Registerseite Daten. Klicken Sie erst auf die Eigenschaft Datenherkunft (ältere Access-Versionen) beziehungsweise Datensatzquelle und dann auf die Schaltfläche mit den drei Punkten am rechten Rand. Access fragt nun, ob Sie eine Abfrage erstellen möchten, die auf der als Datenherkunft gewählten Tabelle basiert – klicken Sie hier auf Ja.

Nun erscheint der Entwurf einer Abfrage, die im oberen Bereich bereits die Tabelle tblArtikel enthält.

Im Unterformular sind bereits Steuerelemente zur Anzeige aller Felder der Tabelle angelegt, also muss auch die neue Datenherkunft alle Felder der Tabelle zurückliefern. Markieren Sie alle Felder in der Feldliste unter tblArtikel, indem Sie zunächste das oberste Feld und dann bei gedrückter Umschalttaste das unterste Feld anklicken.

Lassen Sie die Umschalttaste los und ziehen Sie die markierten Felder per Drag and Drop in das Entwurfsraster im unteren Bereich.

Um alle Felder anzuzeigen, könnten Sie auch einfach das Sternchen aus der Feldliste in das Entwurfsraster ziehen. Allerdings müssten Sie dann solche Felder, für die Sie Sortierungen oder Kriterien festlegen möchten, erneut zum Entwurf hinzufügen und dann deren Anzeige deaktivieren, damit diese nicht zweimal im Abfrageergebnis erscheinen. Wenn Sie gleich alle Felder in das Entwurfsraster ziehen, ist es einfacher.

Im nächsten Schritt legen Sie das Kriterium für das Abfrageergebnis fest. Dieses soll nur diejenigen Datensätze liefern, deren Artikelname mit dem im Textfeld txtArtikelsuche des Hauptformulars angegebenen Ausdruck übereinstimmt.

Im einfachsten Fall gehen wir davon aus, dass es sich um eine hundertprozentige Übereinstimmung handeln muss. Dies erreichen Sie, indem Sie den folgenden Ausdruck als Kriterium in die Spalte für das Feld Artikelname eintragen (siehe Bild 3):

Neue Datenherkunft des Unterformulars

Bild 3: Neue Datenherkunft des Unterformulars

Forms!frmArtikelsuche!txtArtikelsuche

Schließen Sie den Abfrageentwurf und bestätigen Sie die Änderungen. Anschließend zeigen Sie das Formular in der Formularansicht an.

Das Ergebnis überrascht kaum: Das Unterformular zeigt keinerlei Datensätze an – schließlich enthält das als Kriterium angegebene Textfeld txtArtikelsuche ja auch keinen Wert. Es geschieht erst etwas, wenn Sie etwa den Artikelnamen Chai in das Suchfeld eintragen und auf Suchen klicken.

Fehlersuche

Wie finden Sie nun heraus, was schiefläuft, wenn kein Suchbegriff angegeben wurde? Am einfachsten, indem Sie zunächst die für die Eigenschaft Datenherkunft des Unterformulars festgelegte Abfrage als eigene Abfrage speichern und den Namen der gespeicherten Abfrage als Datenherkunft angeben. Damit können Sie die Abfrage dann unabhängig vom Formular öffnen und mit den verschiedenen Kriterien experimentieren, während das Formular in der Formularansicht angezeigt wird.

Dazu klicken Sie erneut auf die Schaltfläche mit den drei Punkten für die Eigenschaft Datenherkunft/Datensatzquelle des Unterformulars. Unter Access 2010 etwa finden Sie dann im Ribbon den Eintrag Schließen|Speichern, mit dem Sie die Abfrage beispielsweise unter dem Namen qrySfmArtikelsuche speichern können.

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!