Lookup-Daten per Formular verwalten

Wenn Sie Daten wie Anreden, Funktionen, Abteilungen et cetera in Lookup-Tabellen speichern und diese Daten in weiteren Tabellen per Nachschlagefeld verfügbar machen, werden Sie in Formularen Kombinationsfelder zur Auswahl solcher Daten bereitstellen. Was aber, wenn der Benutzer von diesem Formular die Daten der Lookup-Tabelle bearbeiten möchte – etwa, um diese zu erweitern, zu ändern oder um nicht benötigte Einträge zu löschen Dann stellen Sie ihm ein weiteres Formular bereit, das er über eine Schaltfläche direkt neben dem Kombinationsfeld öffnen kann. Wie das funktioniert, zeigt dieser Artikel.

Beispieldatenbank

Die Beispiele zu diesem Artikel finden Sie in der Datenbank 1107_Lookupformular.mdb.

Ausgangsformular

Im Artikel Werte zu Kombinationsfeldern hinzufügen haben wir gezeigt, wie Sie neue Daten für Lookup-Tabellen direkt in das Kombinationsfeld zu ihrer Auswahl eingeben können. Der vorliegende Artikel verwendet die gleiche Grundkonfiguration, das heißt: Das Formular frmArtikel basiert auf der Tabelle tblArtikel als Datenherkunft. Das Kombinationsfeld cboKategorien ist an das Feld KategorieID dieser Tabelle gebunden und zeigt seinerseits Daten aus der Tabelle tblKategorien an. Ausführlichere Informationen etwa zum Erstellen des Formulars finden Sie im oben genannten Artikel.

Formular zum Bearbeiten von Lookup-Daten

In diesem Beispiel sollen die Daten der Tabelle tblKategorien bearbeitet werden, und davon nur die beiden Felder KategorieID und Kategorie. Dazu erstellen Sie ein Formular namens frmKategorien, das als Hauptformular dient:

  • Das Formular soll ein Unterformular enthalten, das wir gleich im Anschluss erstellen.
  • Außerdem weisen Sie diesem eine Schaltfläche namens cmdOK mit der Beschriftung OK zu.
  • Da das Formular selbst keine Daten anzeigt, sondern diese im Unterformular dargestellt werden, legen Sie für die Eigenschaften Datensatzzeiger, Navigationsschaltflächen, Bildlaufleisten und Trennlinien den Wert Nein fest. Außerdem soll die Eigenschaft Automatisch zentrieren den Wert Ja erhalten.

Speichern Sie das Formular unter dem Namen frmKategorien und legen Sie ein weiteres Formular an, dass Sie unter dem Namen sfmKategorien speichern:

  • Weisen Sie der Eigenschaft Datenherkunft des Formulars den Wert tblKategorien zu.
  • Fügen Sie die beiden Felder KategorieID und Kategorie aus der Feldliste zum Formularentwurf hinzu.
  • Stellen außerdem die Eigenschaft Standardansicht auf Datenblatt ein. Die Steuerelemente brauchen Sie unter dieser Einstellung nicht mühevoll anzuordnen, in der Datenblattansicht geschieht dies automatisch.

Das Unterformular sfmKategorien sieht nun wie in Bild 1 aus. Damit die Schaltfläche cmdOK das Formular schließt, fügen Sie der Eigenschaft Beim Klicken der Schaltfläche den Wert [Ereignisprozedur] hinzu, klicken auf die Schaltfläche mit den drei Punkten (…) und ergänzen die nun im VBA-Editor angezeigte Ereignisprozedur wie folgt:

Das Unterformular zur Anzeige der Kategorien

Bild 1: Das Unterformular zur Anzeige der Kategorien

Private Sub cmdOK_Click()
     DoCmd.Close acForm, Me.Name
End Sub

Nun fügen Sie das Unterformular sfmKategorien zum Detailbereich des Hauptformulars frmKategorien hinzu – wie das am einfachsten gelingt, erfahren Sie in Unterformular zu Formular hinzufügen. Das Ergebnis sieht im Entwurf etwa wie in Bild 2 aus.

Haupt- und Unterfomular in vereinigter Form

Bild 2: Haupt- und Unterfomular in vereinigter Form

Kategorie-Aktionen

Es gibt mehrere Aktionen in Zusammenhang mit den Kategorien, die einem Artikel zugeordnet werden können:

  • Hinzufügen einer neuen Kategorie
  • Bearbeiten der Liste von Kategorien
  • Löschen von Kategorien
  • Zusammenführen von Kategorien

Hinzufügen einer neuen Kategorien

Dieses Thema ist bereits erledigt: Das Hinzufügen einer neuen Kategorie erfolgt schlicht durch das Eintragen des Kategorienamens und der Bestätigung der Rückfrage durch den Benutzer – genau so, wie wir es bereits in Werte zu Kombinationsfeldern hinzufügen beschrieben haben.

Bearbeiten und Löschen der Kategorien

Das Bearbeiten und Löschen der Kategorien kann nicht direkt im Artikel-Formular erfolgen. Wenn der Benutzer hier die Bezeichnung einer Kategorie ändert, erkennt die Prozedur, die durch das Ereignis Bei nicht in Liste ausgelöst wird, dass hier eine neue Kategorie vorliegt und fragt, ob diese in der Kategorientabelle angelegt werden soll – siehe Werte zu Kombinationsfeldern hinzufügen.

Zum Bearbeiten der Bezeichnungen von Kategorien soll vielmehr das Formular frmKategorien erscheinen und dem Benutzer die Eingabe der neuen Bezeichnung ermöglichen.

Wie aber öffnen wir das Formular und wie zeigen wir dem Benutzer, dass er überhaupt die Möglichkeit hat, die Bearbeitung der Kategorien direkt vom Artikel-Formular aus zu starten

Hier gibt es wiederum zwei Möglichkeiten:

  • Sie fügen eine offensichtliche Methode hinzu, beispielsweise eine Schaltfläche rechts neben dem Kombinationsfeld. Als Beschriftung können Sie einfach drei Punkte (…) verwenden (siehe Bild 3).
  • Schaltfläche zum öffnen des Formulars frmKategorien

    Bild 3: Schaltfläche zum öffnen des Formulars frmKategorien

  • Oder Sie erlauben dem Benutzer, das Kategorien-Formular durch einen Doppelklick in das Kombinationsfeld cboKategorieID zu öffnen.

Zum Löschen von Kategorien sollten Sie ebenfalls das Detailformular heranziehen – mehr dazu weiter unten.

Kategorie-Formular öffnen

Zum öffnen des Kategorie-Formulars fügen Sie also eine Schaltfläche namens cmdKategorienBearbeiten rechts nebem dem Kombinationsfeld cboKategorieID ein (siehe Bild 4). Weisen Sie der Eigenschaft Beim Klicken den Wert [Ereignisprozedur] zu und klicken Sie auf die daraufhin erscheinende Schaltfläche mit den drei Punkten (…) neben der Eigenschaft. Der VBA-Editor zeigt nun die durch das Ereignis Beim Klicken ausgelöste Prozedur an, die Sie wie folgt ergänzen:

Private Sub cmdKategorienBearbeiten_Click()
     DoCmd.OpenForm "frmKategorien", _
         WindowMode:=acDialog, DataMode:=acFormEdit
End Sub

Die Prozedur öffnet das Formular frmKategorien wie in Bild 4. Sie können hier bereits mit Bordmitteln Kategorien ändern (durch einfaches Bearbeiten), hinzufügen (durch Einfügen von Datensätzen) oder löschen (durch markieren und betätigen der Entf-Taste).

öffnen der Kategorie-übersicht per Schaltfläche

Bild 4: öffnen der Kategorie-übersicht per Schaltfläche

Das Löschen gelingt allerdings nur, wenn die Kategorie noch keinem Artikel-Datensatz zugewiesen ist. Dafür sorgt die für die Beziehung zwischen den Tabellen tblArtikel und tblKategorien festgelegte referentielle Integrität. Sollten Sie dennoch versuchen, einen bereits referenzierten Datensatz der Tabelle tblKategorien im Formular frmKategorien zu löschen, rufen Sie damit die Meldung aus Bild 5 hervor.

Diese Fehlermeldung erscheint, wenn Sie versuchen, einen verknüpften Datensatz der Tabelle tblKategorien zu löschen.

Bild 5: Diese Fehlermeldung erscheint, wenn Sie versuchen, einen verknüpften Datensatz der Tabelle tblKategorien zu löschen.

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