Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Wenn Sie etwa eine Kundendatenbank nutzen und während eines Tages Aktionen rund um die Pflege mehrerer Kunden ausführen, möchten Sie diese vielleicht nicht direkt nach dem Bearbeiten wieder schließen, sondern gegebenenfalls noch geöffnet lassen, weil noch zusätzliche Schritte nötig sind. Dieser Artikel zeigt, wie Sie Kunden in einem Hauptformular aus einer Liste mit Suchfunktion auswählen und die einzelnen Kundendatensätze dann in der Detailansicht in den Unterformularen eines Registersteuerelements anzeigen.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1803_MehrereDatensaetzeImRegister.accdb.
Listenfeld mit Schnellsuche
Der oberen Teil unserer kleinen Beispiellösung soll ein Listenfeld enthalten, dass die Datensätze der Tabelle tblKunden liefert. Darüber legen wir ein Textfeld an, mit dem wir schnell nach den Namen der Kunden suchen und die Datensätze im Listenfeld dann filtern können – direkt bei Eingabe der einzelnen Buchstaben.
Dazu fügen wir dem Formular ganz oben ein Textfeld namens txtSuche hinzu. Darunter legen wir ein Listenfeld namens lstKunden an (siehe Bild 1). Damit die Größe des Listenfeldes beim ändern der Größe des Formulars angepasst wird, stellen wir seine Eigenschaften Horizontaler Anker und Vertikaler Anker auf Beide ein. Für das Formular legen wir für die Eigenschaften Datensatzmarkierer, Navigationsschaltflächen, Bildlaufleisten und Trennlinien den Wert Nein und für Automatisch zentrieren den Wert Ja fest.
Bild 1: Suchfeld und Listenfeld zur Ausgabe der Suchergebnisse
Die Datensatzherkunft des Listenfeldes stellen wir auf die Abfrage aus Bild 2 ein. Diese liefert alle Datensätze der Tabelle tblKunden, allerdings nur die Felder KundeID, KundenCode, Firma und Kontaktperson. Die Sortierung erfolgt aufsteigend nach dem Feld Firma. Damit das Listenfeld nur den Inhalt ab den zweiten Feld der Datensatzherkunft anzeigt, stellen wir die Eigenschaft Spaltenanzahl auf 4 und die Eigenschaft Spaltenbreiten auf 0cm;2cm;5cm;5cm ein.
Bild 2: Datensatzherkunft des Listenfeldes
Dann hinterlegen wir für die Ereigniseigenschaft Bei änderung des Textfeldes txtSuche die Ereignisprozedur aus Listing 1. Die Prozedur trägt zunächst den aktuell im Textfeld txtSuche angezeigten Text in die Variable strSuche ein. Dann prüft sie, ob die Variable einen Suchbegriff mit einer Länge von mindestens einem Zeichen enthält. Ist das der Fall, setzt die Prozedur in der Variablen strKriterium einen Ausdruck zusammen, der die drei Felder Kundencode, Firma und Kontaktperson mit dem Ausdruck aus strSuche vergleicht und die einzelnen Kriterien mit dem OR-Operator verbindet. Dieses Kriterium tragen wir dann zusammen mit einem SQL-Ausdruck, der etwa dem Inhalt der ursprünglich als Datensatzherkunft für das Listenfeld verwendeten Abfrage entspricht, für die Eigenschaft RowSource des Listenfeldes lstKunden ein.
Private Sub txtSuche_Change() Dim strSuche As String Dim strSQL As String Dim strKriterium As String strSuche = Me!txtSuche.Text If Len(strSuche) > 0 Then strKriterium = "WHERE Kundencode LIKE '*" & strSuche & "*' OR Firma LIKE '*" & strSuche _ & "*' OR Kontaktperson LIKE '*" & strSuche & "*'" End If strSQL = "SELECT KundeID, KundenCode, Firma, Kontaktperson FROM tblKunden " & strKriterium & "ORDER BY Firma" Me!lstKunden.RowSource = strSQL End Sub
Listing 1: Prozedur zum Durchsuchen des Listenfeldes
Wenn der Benutzer beispielsweise nur den Buchstaben A in das Textfeld einträgt, erhält das Listenfeld die folgende Datensatzherkunft:
SELECT KundeID, KundenCode, Firma, Kontaktperson FROM tblKunden WHERE Kundencode LIKE '*A*' OR Firma LIKE '*A*' OR Kontaktperson LIKE '*A*'ORDER BY Firma
Das Zwischenergebnis sieht nun etwa wie in Bild 3 aus. Hier haben wir den Suchbegriff Restauran eingegeben, was alle Einträge liefert, die diesen Ausdruck in einem der drei Felder Kundencode, Firma oder Kontaktperson enthält.
Bild 3: Beispiel für die Suche nach bestimmten Kunden
Registersteuerelement hinzufügen
Nun wollen wir das Registersteuerelement hinzufügen, das die per Doppelklick ausgewählten Kunden auf jeweils einer Registerseite anzeigt. Dazu legen wir zuerst das Registersteuerelement wie in Bild 4 an und geben ihm den Namen regKunden.
Bild 4: Das Formular mit dem Registersteuerelement für die Anzeige der Kunden
Nun verhält es sich unter Access so, dass wir zur Laufzeit keine Steuer-elemente zu einem Formular hinzufügen können. Dies ist nur in der Entwurfsansicht möglich.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo