window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-TCJTE9L38H');

Mehrere Datensätze im Register-Steuerelement

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.

Suchfeld und Listenfeld zur Ausgabe der Suchergebnisse

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.

Datensatzherkunft des Listenfeldes

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.

Beispiel für die Suche nach bestimmten Kunden

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.

Das Formular mit dem Registersteuerelement für die Anzeige der Kunden

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

Schreibe einen Kommentar