m:n-Beziehung per ListView-Checkbox pflegen

Das Festlegen von Daten für einfache m:n-Beziehungen, die nur die reine Verknüpfung zwischen zwei Tabellen herstellen, ohne weitere Daten zu liefern, gelingt auf verschiedene Arten. In diesem Beitrag stellen wir eine Möglichkeit über das ListView-Steuerelement und hier speziell über die Kontrollkästchen der einzelnen Einträge vor.

Die Verwaltung von Daten in m:n-Beziehungen haben wir in Access im Unternehmen schon auf verschiedenste Arten durchgeführt – sogar mit Kontrollkästchen (siehe m:n-Beziehung per Kontrollkästchen verwalten, www.access-im-unternehmen.de/723). Die dortige Lösung hatte jedoch den Nachteil, dass diese allzusehr nach Datenblatt aussah (s. Abb. 1). Das bekommen wir noch ein wenig professioneller hin!

pic002.png

Abb. 1: Eine bekannte Lösung …

Die Lösung dieses Beitrags sieht im fertigen Zustand wie in Abb. 2 aus. Das Formular heißt frmFahrzeugeAusstattungsmerkmale und ist an die Tabelle tblFahrzeuge gebunden.

pic001.png

Abb. 2: … und die Variante dieses Beitrags

Datenmodell

Die im ListView angezeigten Datensätze stammen aus der Tabelle tblAusstattungsmerkmale. Für die Beziehung zwischen Fahrzeugen und Ausstattungsmerkmalen und somit auch für die Haken in den Kontrollkästchen ist die Tabelle tblFahrzeugeAusstattungsmerkmale verantwortlich. Diese Tabelle enthält ein Primärschlüsselfeld sowie zwei Fremdschlüsselfelder zu den Feldern FahrzeugID und AusstattungsmerkmalID der beiden zu verknüpfenden Tabellen. Für diese beiden Felder legen Sie einen zusammengesetzten eindeutigen Schlüssel zusammen, damit jede Kombination aus Fahrzeug und Ausstattungsmerkmal nur einmal vorkommen kann (s. Abb. 3). Die drei Tabellen sehen im Datenmodell wie in Abb. 4 aus.

pic004.png

Abb. 3: Dieser Index sorgt für eindeutige Kombinationen aus Fahrzeugen und Ausstattungsmerkmalen

pic003.png

Abb. 4: Das Datenmodell der Beispieldatenbank

Die Tabelle tblFahrzeugeAusstattungsmerkmale enthält nur Daten, wenn ein Fahrzeug ein Ausstattungsmerkmal besitzt. Zum Hinzufügen eines Ausstattungsmerkmals erstellt man einen Datensatz in dieser Tabelle, der auf die entsprechende Kombination aus Fahrzeug und Ausstattungsmerkmal verweist. Soll ein Ausstattungsmerkmal entfernt werden, löscht man analog den betroffenen Eintrag.

Aufbau des Formulars

Das Formular enthält die zwei Felder der Tabelle tblFahrzeuge sowie das ListView-Steuerelement lstListView (s. Abb. 5). Das Füllen des ListView-Steuerelements mit den Daten erfolgt in zwei Schritten:

pic005.png

Abb. 5: Das Formular in der Entwurfsansicht

  • Im ersten Schritt werden alle Einträge der Tabelle tblAusstattungsmerkmale hinzugefügt. Dabei wird für jeden Eintrag ein ListView-Element angelegt.
  • Im zweiten Schritt werden die Kontrollkästchen der ListView-Elemente in Abhängigkeit vom aktuellen Fahrzeug und von den Ausstattungsmerkmalen aktiviert.

Das ListView-Steuerelement soll auf das Anklicken des Kontrollkästchens reagieren und eine Ereignisprozedur auslösen, welche die Daten der Tabelle tblFahrzeugeAusstattungsmerkmale aktualisiert. Damit dies geschehen kann, benötigen wir eine mit dem Schlüsselwort WithEvent deklarierte Variable, die auf das ListView-Steuerelement verweist. Die Deklaration nehmen Sie im Kopf des Klassenmoduls des Formulars vor (sollte dies noch nicht vorhanden sein, stellen Sie die Formulareigenschaft Hat Modul auf den Wert Ja ein):

Dim WithEvents objListView As MSComctlLib.ListView

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar