Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 3/2011.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Erfahren Sie, wie Sie m:n-Beziehungen per ListView und Kontrollkästchen abbilden.

Techniken

ListView, VBA

Voraussetzungen

Access 2002 und höher

Beispieldateien

mnPerKontrollkaestchenUndListView.mdb

Shortlink

www.access-im-unternehmen.de/777

m:n-Beziehung per ListView-Checkbox pflegen

André Minhorst, Duisburg

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

Beim Laden des Formulars stellt die Ereignisprozedur aus Listing 1 einige Eigenschaften des ListView-Steuerelements ein. Besonders wichtig ist hier der Wert True für die Eigenschaft Checkboxes. Danach ruft sie die Prozedur ListViewFuellen auf, die für das Eintragen aller Ausstattungsmerkmale verantwortlich ist.

Listing 1: Initialisieren des ListView-Steuerelements beim Laden des Formulars

Private Sub Form_Load()

    Set objListView = Me!ctlListView.Object

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.