Home > Artikel > Ausgabe 9/2011 > Kombinationsfeld als Eingabehilfe für Textfelder

Kombinationsfeld als Eingabehilfe für Textfelder

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).

Kombinationsfelder haben Sie in Access [basics] bisher als Möglichkeit kennengelernt, Verknüpfungen zu Daten aus anderen Tabellen herzustellen. Das ist auch der meistgenutzte Anwendungszweck von Kombinationsfeldern. Wenn Sie den Benutzern Ihrer Anwendung jedoch das Leben erleichtern möchten, können Sie es auch an anderer Stelle einsetzen – beispielsweise, um bereits eingegebene Werte eines Feldes zur Auswahl anzubieten. Das ist vor allem hilfreich, wenn das Feld Werte enthält, die mehrfach vorkommen, aber dennoch nicht in eine Lookup-Tabelle ausgegliedert wurden.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1109_KombinationsfeldAlsEingabehilfe.mdb.

Hilfe bei PLZ und Ort

Ein Beispiel für diesen Fall sind PLZ und Ort bei Adressdaten. Normalerweise gibt der Benutzer Postleitzahlen und Orte immer komplett ein – ohne jegliche Eingabehilfe. Was aber, wenn die einzugebenden Adressen, beispielsweise von Kunden, immer wieder gleich sind, weil die Kunden alle aus dem direkten Umkreis stammen? Da wäre es doch sinnvoll, dem Benutzer die eine oder andere Erleichterung zu bieten. In diesem Fall verwenden Sie einfach ein Kombinationsfeld statt eines Textfeldes, dass sowohl die Eingabe neuer Werte als auch die Auswahl bereits vorhandener Werte ermöglicht – und somit auch die automatische Ergänzung beim Eingeben der ersten paar Zeichen einer PLZ oder eines Ortes.

Als Beispiel dienen die Felder PLZ und Ort der Tabelle tblKunden der Beispieldatenbank (siehe Bild 1).

Beispieltabelle tblKunden

Bild 1: Beispieltabelle tblKunden

Das Formular frmKunden verwendet diese Tabelle als Datenherkunft. Ziehen Sie in der Entwurfsansicht des Formulars einfach alle Felder aus der Feldliste in den Detailbereich. Sie erhalten dort zunächst eine Reihe Textfelder, auch für die beiden Felder PLZ und Ort (siehe Bild 2). Das ist kein Wunder, denn diese Felder sind ja im Entwurf der Tabelle nicht anders definiert worden. Damit sich dies ändert, klicken Sie zunächst mit der rechten Maustaste auf das Textfeld PLZ. Wählen Sie aus dem Kontextmenü den Eintrag Ändern zu|Kombinationsfeld aus. Führen Sie den gleichen Schritt für das Textfeld Ort aus. Benennen Sie die beiden Steuerelemente dann in cboPLZ und cboOrt um.

Hinzufügen der Felder der Tabelle tblKunden zum Formular frmKunden

Bild 2: Hinzufügen der Felder der Tabelle tblKunden zum Formular frmKunden

Nach dem Wechsel in die Formularansicht tut sich nicht viel: Sie können ganz gewöhnlich Daten in die Kombinationsfelder eintragen (siehe Bild 3). Das Aufklappen der Kombinationsfelder bietet keine weiteren Auswahlmöglichkeiten an.

Eintragen von Daten in Textfelder, die in Kombinationsfelder umgewandelt wurden

Bild 3: Eintragen von Daten in Textfelder, die in Kombinationsfelder umgewandelt wurden

Das ändern wir jetzt, und zwar zunächst für die Postleitzahl. Wechseln Sie zurück in die Entwurfsansicht des Formulars und klicken Sie auf das Steuerelement cboPLZ. Klicken Sie in die Eigenschaft Datensatzherkunft und dann auf die nun erscheinende Schaltfläche mit den drei Punkten (...). Sie öffnen damit die Abfrage-Entwurfsansicht und können nun eine Abfrage als Datensatzherkunft für das Kombinationsfeld einstellen.

Wählen Sie im Dialog Tabelle anzeigen den Eintrag tblKunden aus und schließen Sie diesen Dialog. Ziehen Sie das Feld PLZ aus der Tabelle tblKunden in das Entwurfsraster des Abfrageentwurfs und stellen Sie die Sortierung auf Aufsteigend ein. Wenn Sie nun in die Datenblattansicht wechseln, zeigt diese bereits alle Postleitzahlen der Tabelle an – allerdings auch doppelte. Damit dies nicht geschieht, stellen Sie die Eigenschaft Keine Duplikate der Tabelle auf Ja ein (siehe Bild 4). Sollte das Eigenschaftsfenster gerade nur Feldeigenschaften anzeigen, ist aktuell ein Feld markiert – vermutlich, weil Sie dieses gerade bearbeitet haben. Klicken Sie dann einfach in den grau hinterlegten Bereich oben im Abfrageentwurf, um die Abfrage-Eigenschaften einzublenden.

Einstellen der Datensatzherkunft des Kombinationsfeldes

Bild 4: Einstellen der Datensatzherkunft des Kombinationsfeldes

Schließen Sie den Abfrageentwurf und kehren Sie zum Formular zurück. Wechseln Sie zur Formularansicht und geben Sie für einen neuen Kunden die Postleitzahl ein, die testweise genauso beginnt wie eine bereits vorhandene Postleitzahl. Und das Ergebnis überzeugt: Das Kombinationsfeld zeigt gleich den ersten Treffer der bisher eingegebenen PLZs an, das mit den bereits eingegebenen Zeichen übereinstimmt (siehe Bild 5). Der Benutzer könnte nun direkt zum nächsten Feld springen und den aktuellen Wert so übernehmen. Sie haben aber noch mehr Möglichkeiten: Sie können zum Beispiel das Kombinationsfeld aufklappen und einen der bisher vergebenen Werte auswählen. Für Tastatur-Fans: Ein Kombinationsfeld öffnen Sie mit F4.

Kombinationsfeld mit automatischer Ergänzung

Bild 5: Kombinationsfeld mit automatischer Ergänzung

Automatische Ergänzung aktiv?

Das die automatische Ergänzung so funktioniert (wenn sie funktioniert), liegt an der Einstellung der Eigenschaft Automatische Ergänzung des Kombinationsfeldes. Wenn bei Ihnen nicht automatisch der nächste verfügbare Eintrag angezeigt wird, ist diese Eigenschaft möglicherweise auf den Wert Nein eingestellt. Ändern Sie den Wert in diesem Fall einfach auf Ja.

Automatisch aufklappen?

Wenn Sie möchten, können Sie das Kombinationsfeld so programmieren, dass es beim Fokuserhalt direkt aufgeklappt wird. Dazu legen Sie in der Entwurfsansicht des Formulars eine Prozedur an, die durch das Ereignis Bei Fokuserhalt des Kombinationsfeldes cboPLZ ausgelöst wird. Markieren Sie dieses Steuerelement, wählen Sie im Eigenschaftsfeld auf die Eigenschaft Bei Fokuserhalt den Eintrag [Ereignisprozedur] aus und klicken Sie dann auf die Schaltfläche mit den drei Punkten. Die öffnet den VBA-Editor, der gleich den passenden Prozedurrumpf anzeigt. Diesen ergänzen Sie wie folgt:

Private Sub cboPLZ_GotFocus()

     Me!cboPLZ.Dropdown

End Sub

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!