Persistente Mehrfachauswahl im Listenfeld

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

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 Bild 1 darstellt und auf drei Tabellen aufteilt.

pic001.tif

Bild 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.

Markierung von Listenfeldelementen
speichern


Nur für Abonnenten

Ab hier wird’s wirklich spannend – der Rest ist exklusiv für Abonnenten.

Mit dem Abo von Access im Unternehmen bekommst du den kompletten Artikel – inklusive vollständigem Code, Beispieldatenbank und Schritt-für-Schritt-Erklärung.

So sparst du dir stundenlanges Herumprobieren, vermeidest teure Fehler in deiner Access-Anwendung und kannst Lösungen direkt in deinem Unternehmen einsetzen, statt nur darüber zu lesen.

Teste Access im Unternehmen jetzt 4 Wochen lang kostenlos: Voller Zugriff auf alle Artikel, Downloads und Beispieldatenbanken. Kein Risiko – wenn es für dich nicht passt, kündigst du einfach innerhalb der ersten vier Wochen.

Bereits Abonnent? Hier einloggen


Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →

Schreibe einen Kommentar