Werte zu Kombinationsfeldern hinzufügen

Kombinationsfelder bieten meist Daten aus Lookup-Tabellen zur Auswahl an. Das bedeutet, dass Sie damit etwa die Anrede oder den Titel einer Person festlegen können, wobei Anreden und Titel in separaten Tabellen gespeichert sind. Das ist schon hilfreich. Noch praktischer wäre es allerdings, wenn Sie neue Einträge für die separaten Tabellen direkt über das Kombinationsfeld eintragen könnten. Wie dies funktioniert, zeigt dieser Artikel.

Beispieldatenbank

Die Beispiele zu diesem Artikel finden Sie in der Datenbank 1105_KombifelderErweitern.mdb.

Lookup-Tabellen

Wie Sie Lookuptabellen anlegen, haben Sie bereits in Anreden und Co. mit Wertlisten oder -Lookup-Tabellen verwalten erfahren. Der Benutzer kann dort über ein Kombinationsfeld auf einfache Weise beispielsweise einen der Werte Herr oder Frau als Anrede für eine Person auswählen.Das ist natürlich kein besonders gutes Beispiel, wenn es darum geht, die Daten einer Lookup-Tabelle zu erweitern. Interessanter sind Kandidaten wie Abteilungen, Funktionen, Kategorien et cetera.

Im Rahmen dieses Artikels kümmern wir uns um die Artikelkategorien der Südsturm-Datenbank und wollen diese über die Benutzeroberfläche erweitern. Dabei interessieren uns besonders die beiden Tabellen tblArtikel und tblKategorien. Die Tabelle tblArtikel enthält ein Feld namens KategorieID, mit dem der Primärschlüsselwert der passenden Kategorie der Tabelle tblKategorien festgelegt werden kann (siehe Bild 1).

Artikel und Kategorien werden über das Fremdschlüsselfeld KategorieID verknüpft

Bild 1: Artikel und Kategorien werden über das Fremdschlüsselfeld KategorieID verknüpft

Damit der Benutzer die Kategorie einfach per Nachschlagefeld beziehungsweise Kombinationsfeld auswählen kann, wurde das Feld KategorieID wie in ?[basics] Nachschlagefeld für eine 1:n-Beziehung einrichten beschrieben in ein Nachschlagefeld umgewandelt.

Formular zur Anzeige von Artikeln und Kategorien

Das Formular aus Bild 2 heißt frmArtikelUndKategorien und verwendet die Tabelle tblArtikel als Datenherkunft. Um das Beispiel einfach zu halten, haben wir einfach nur die drei Felder ArtikelID, Artikelname und KategorieID in den Detailbereich der Entwurfsansicht des Formulars gezogen. Dadurch, dass das Feld KategorieID bereits im Tabellenentwurf als Nachschlagefeld definiert wurde, wird es auch im Formular gleich als Kombinationsfeld ausgeführt. Wenn Sie nun in die Formularansicht wechseln, können Sie vorhandene Artikel bearbeiten oder neue Artikel eingeben und dabei die Kategorie bequem per Kombinationsfeld auswählen (siehe Bild 3).

Kombinationsfeldeinträge auswählen

Bild 2: Kombinationsfeldeinträge auswählen

Das Beispielformular in der Entwurfsansicht

Bild 3: Das Beispielformular in der Entwurfsansicht

Beim Anlegen der Steuerelemente, die an die Felder ArtikelID, Artikelname und KategorieID gebunden sind, vergibt Access eben diese Bezeichnungen als Steuerelementnamen. Damit wir später im Artikel besser zwischen den Feldern und Steuerelementen unterscheiden können, erweitern Sie die Namen der Steuerelemente um entsprechende Präfixe, also txtArtikelID, txtArtikelname und cboKategorieID. Mehr zu Präfixen erfahren Sie unter Konventionen.

Neue Kategorien eingeben

Was aber, wenn Sie nun einen Artikel anlegen, der sich in keine der vorhandenen Kategorien einsortieren lässt Ganz klar: Der Benutzer öffnet die Tabelle tblKategorien, trägt die neue Kategorie ein und kann diese dann nach dem Aktualisieren des Formulars frmArtikelUndKategorien auswählen … oder doch nicht Nein! Der Benutzer soll auf gar keinen Fall direkt auf die Tabellen einer Anwendung zugreifen. Sie als Entwickler dürfen natürlich in Ausnahmefällen direkt Daten in Tabellen bearbeiten, aber dem Benutzer sollten Sie geeignete Formulare zur Verfügung stellen.

Es gibt nun zwei Möglichkeiten zur Eingabe von Kategorien:

  • Sie legen ein neues Formular an, das an die Tabelle tblKategorien gebunden ist und erlauben darüber das Eingeben und Bearbeiten der Kategorien. Dieses Formular können Sie beispielsweise über eine Schaltfläche rechts vom Kombinationsfeld öffnen.
  • Sie erlauben dem Benutzer, neben den vorhanden Kategorien auch neue Kategorien direkt in das Kombinationsfeld einzugeben. Diese werden dann, gegebenenfalls nach Rückfrage, in der Tabelle tblKategorien gespeichert.

Beide Varianten haben Vorteile: Die erste erlaubt gleichzeitig, die bestehenden Kategorien zu bearbeiten oder auch mal gleich mehrere neue Kategorien einzugeben. Die zweite ist direkter: Der Benutzer braucht nur den Kategorietext einzugeben und diese wird direkt für den aktuellen Artikel übernommen. In diesem Artikel betrachten wir die zweite Methode, die erste schauen wir uns in einem weiteren Artikel namens Meldungsfenster anzeigen und auswerten an.

Kombinationsfeld aufbohren

Ob der Benutzer neue Werte in ein Kombinationsfeld eingeben kann, hängt in erster Linie von der Eigenschaft Nur Listeneinträge ab (siehe Bild 4). Nun könnten Sie auf die Idee kommen, dass wir diese Eigenschaft für unsere Zwecke, nämlich im laufenden Betrieb direkt neue Kategorien in das Kombinationsfeld einzugeben, auf den Wert Nein einstellen müssen. Der Versuch scheitert: Die Eigenschaft darf laut der dabei erscheinenden Meldung nur auf Nein eingestellt werden, wenn die erste sichtbare Spalte die gebundene Spalte ist.

Die Eigenschaft Nur Listeneinträge

Bild 4: Die Eigenschaft Nur Listeneinträge

In unserem Fall enthält die erste Spalte der Datensatzherkunft des Kombinationsfeldes das Feld KategorieID, angezeigt wird aber die zweite Spalte Kategoriename. Die Eigenschaft Nur Listeneinträge könnten Sie nur auf Nein einstellen, wenn die KategorieID als erstes Feld im Kombinationsfeld angezeigt würde.

Das lässt sich ändern, indem Sie die Eigenschaft Spaltenbreiten auf einen Wert wie 1cm ändern – die Daten des Feldes KategorieID werden dann auf einer Breite von einem Zentimeter angezeigt, das Feld Kategoriename nimmt den verbleibenden Platz der aufgeklappten Liste ein (im Steuerelement selbst wird nun nur noch die KategorieID angezeigt).

Nun lässt sich die Eigenschaft Nur Listeneinträge auf den Wert Nein einstellen. Ist es nun auch möglich, neue Werte für die gebundene Spalte des Steuerelements, also für die KategorieID, einzugeben Nein: Das Feld KategorieID ist als Fremdschlüsselfeld zum gleichnamigen Feld der Tabelle tblKategorien ausgelegt und gleichzeitig gibt es eine mit referentieller Integrität festgelegte Beziehung zwischen diesen beiden Feldern.

Dies besagt, dass das Fremdschlüsselfeld KategorieID nur den Wert Null oder einen der Werte des Feldes KategorieID der Tabelle tblKategorien aufnehmen darf. Sprich: Sie können nun zwar theoretisch Werte in das Kombinationsfeld cboKategorieID eingeben, aber dies löst einen Fehler aus, weil die entsprechende Beziehung nur vorhandene Werte oder Null als Wert des zugrunde liegenden Feldes erlaubt.

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar