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 4/2007.

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

Erweitern Sie Listenfelder um das Speichern und Wiederherstellen der per Mehrfachauswahl festgelegten Einträge.

Techniken

Formulare, Listenfelder, VBA

Voraussetzungen

Access 2000 und höher

Beispieldateien

PersistenteListenfelder.mdb,
PersistenteListenfelder.accdb

Shortlink

479

Persistente Mehrfachauswahl im Listenfeld

André Minhorst, Duisburg

Das Auswählen von Listenfeldeinträgen mit Ein- oder Mehrfachauswahl macht dieses Steuerelement in vielen Fällen zu einer guten Alternative für Unterformulare. Allein das Auslesen der markierten Informationen bereitet den Entwicklern hier und da Probleme. Und schließlich möchten Sie vielleicht auch einmal die ausgewählten Einträge speichern und wiederherstellen - wie dies alles funktioniert, erfahren Sie in diesem Beitrag.

Warum sollten Sie Ihren Anwendern überhaupt eine Mehrfachauswahl per Listenfeld anbietenund diese dann auch noch im gleichen Steuerelement reproduzieren? Der beste Grund ist immer ein Beispiel, das einen Anlass liefert. In diesem Beitrag ist das ein kleines Formular, mit dem der Benutzer die Ausstattung eines Fahrzeugs eingeben können soll. Möglichkeiten, dies in der Benutzeroberfläche darzustellen, gibt es genug:

Oft eingesetzt, aber schon vom Datenmodellentwurf her völlig falsch ist die Variante, die einzelnen Eigenschaften als Felder des Fahrzeug-Datensatzes zu speichern und im Formular passende Ja/Nein-Felder anzuzeigen. Eine Aufteilung der Objekte Fahrzeug und Ausstattungsmerkmal auf zwei per m:n-Beziehung verknüpfte Tabellen ist zwingend erforderlich, um folgende Versionen zu realisieren:

  • Anzeige der zugeordneten Ausstattungsmerkmale in einem Unterformular, Auswahl der Eigenschaften per Kombinationsfeld (prinzipiell wie im Bestellungen/Bestelldetail-Formular der Nordwind-Datenbank)
  • Einsatz zweier Listenfelder, von denen das linke alle zugeordneten, das rechte alle nicht zugeordneten Elemente enthält; das Zuordnen erfolgt durch passende Pfeil-Schaltflächen oder Doppelklick auf den zu verschiebenden Eintrag.
  • Einsatz eines einzigen Listenfelds, in dem alle zugeordneten Elemente markiert sind.

Die ersten beiden Varianten sollten bekannt sein (falls nicht: Listenfelder von A-Z, Shortlink 87, und m:n-Beziehungen in Haupt- und Unterformular, Shortlink 452, helfen weiter), Letztere nicht unbedingt. Das liegt vor allem daran, dass es keine offensichtliche Möglichkeit gibt, einmal zugeordnete Datensätze beim nächsten Aufruf automatisch wieder im Listenfeld anzuzeigen.

Dies holt der vorliegende Beitrag nach und fügt Ihrem Repertoire an Darstellungsmöglichkeiten von m:n-Beziehungen eine weitere Alternative hinzu. Eines vorweg: Diese Variante ist nicht unbedingt für riesige Datenmengen geeignet. Das ergibt sich nicht nur aus der Tatsache, dass die Einträge möglichst ohne viel Scrollen sichtbar sein sollen, sondern auch aus der Art der Wiederherstellung der Anzeige - dazu jedoch später mehr.

Beispieltabellen

Als Beispiel dient oben genannte Fahrzeug-Ausstattungsmerkmal-Beziehung, die sich wie in Abb. 1 darstellt und auf drei Tabellen aufteilt.

pic001.tif

Abb. 1: Datenmodell der Beispieldatenbank

Die Anzeige erfolgt in einem Formular namens frmFahrzeuge, dessen Eigenschaft Datenherkunft die Tabelle tblFahrzeuge als Wert aufweist. Für dieses Beispiel reicht die Anzeige der beiden Felder FahrzeugID und Fahrzeug völlig aus.

Viel interessanter ist das Listenfeld mit den Ausstattungsmerkmalen: Zunächst statten Sie es einmal mit der Tabelle tblAusstattungen als Datensatzherkunft aus - mehr brauchen Sie nicht. Das Listenfeld soll das Feld AusstattungID als gebundene Spalte verwenden und den Inhalt des Feldes Ausstattung anzeigen. Dazu stellen Sie die Eigenschaften Spaltenanzahl und Spaltenbreiten auf 2 beziehungsweise 0cm ein.

Mehrfachauswahl

Der Benutzer soll mehrere Einträge des Listenfeldes auswählen können, also stellen Sie die Eigenschaft Mehrfachauswahl auf Einzeln ein. Der Unterschied zur Einstellung Erweitert ist der, dass sich mit Einzeln die Einträge ganz einfach durch einen Klick aus- und abwählen lassen.

Die Einstellung Erweitert hingegen erfordert das Drücken der Umschalt- oder der Steuerungstaste, um mit der Maus mehrere Einträge zu markieren. Dafür können Sie so aber auch mehrere Einträge gleichzeitig auswählen (Umschalt-Taste drücken, ersten Eintrag auswählen, zweiten Eintrag auswählen führt zur Markierung der gewählten und aller dazwischen liegenden Einträge).

Im vorliegenden Beispiel, das mit einer überschaubaren Menge von Einträgen aufwartet, scheint die Einstellung Einzeln für die Eigenschaft Mehrfachauswahl sinnvoller.

Damit können Sie die Mehrfachauswahl nun schon ausprobieren - mehr aber auch nicht: Nach dem Wechseln zum nächsten und zum Zurückspringen auf den aktuellen Datensatz empfängt Sie das Listenfeld wieder ohne ausgewählte Einträge.

Es fehlen nun also noch zwei wichtige Schritte: Im ersten werden markierte Einträge in der Tabelle tblFahrzeugeAusstattungen gespeichert (und für deaktivierte wieder entfernt) und im zweiten die vorhandenen Einträge der Tabelle tblFahrzeugeAusstattungen ausgelesen und in Form markierter Einträge im Listenfeld mit den Ausstattungen dargestellt.

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.