Listenfelder von A-Z

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

André Minhorst, Duisburg

Die Möglichkeiten der Darstellung von Daten lassen sich grob in zwei Arten einteilen: Die Darstellung mehrerer Datensätze gleichzeitig in Listenform und die Anzeige der Details zu einem bestimmten Datensatz. Eine Kombination der beiden Varianten ist die Anzeige einer Liste mit mehreren Datensätzen und unterschiedlichen Feldern. Unter Access gibt es drei Möglichkeiten zur Realisierung einer solchen Anzeige: die meist in Form von Unterformularen verwendete Datenblattansicht, die Anzeige der Datensätze per Endlosformular sowie ein spezielles Steuerelement namens Listenfeld. Im vorliegenden Beitrag erfahren Sie, wie Sie letzteres zur Datenanzeige verwenden können und was sich noch alles damit bewerkstelligen lässt.

Listenfelder unterscheiden sich in einem wesentlichen Punkt von den beiden anderen Möglichkeiten zur Anzeige von Daten in Listenform: Die angezeigten Daten können nicht direkt im Listenfeld geändert werden. Sie können zwar einen Eintrag auswählen und seine Detaildaten in einem separaten Formular anzeigen und dort bearbeiten, über den gleichen Weg neue Datensätze anlegen oder Datensätze über eine Ereignisprozedur löschen – aber das Listenfeld selbst dient nur der Anzeige und der Auswahl von Datensätzen.

In der Auswahl von Daten liegt einer der großen Vorteile von Listenfeldern: Im Gegensatz zu Daten in der Endlos- und Datenblattansicht von Formularen bieten sie die Möglichkeit der Mehrfachauswahl.

Die im vorliegenden Beitrag beschriebenen Beispiele beziehen sich sämtlich auf die Tabellen der Nordwind-Datenbank. Wenn Sie schnell mit den Beispielen loslegen möchten, erstellen Sie einfach eine neue leere Datenbank und importieren dann die Tabellen aus der Nordwind-Datenbank.

Zum Kennenlernen der wichtigsten Eigenschaften von Listenfeldern legen Sie ein neues Listenfeld an.

Dazu benötigen Sie zunächst ein neues Formular in der Entwurfsansicht. Das Listenfeld finden Sie in der Toolbox, die Sie auf mehreren Wegen einblenden können:

  • durch Mausklick mit der rechten Maustaste in das Formular und anschließende Auswahl des Eintrages Toolbox
  • über den Menübefehl Ansicht ( Toolbox
  • über die Schaltfläche Toolbox in der Symbolleiste
  • In der Toolbox finden Sie die Schaltfläche Listenfeld, mit der Sie auf zwei Arten ein neues Listenfeld erstellen können:

  • durch einfachen Klick auf die Schaltfläche und anschließendes Aufziehen des Listenfeldes in der gewünschten Größe (siehe Bild 1)
  • per Drag & Drop der Schaltfläche in den Formularentwurf
  • Bild 1: Anlegen eines neuen Listenfeldes

    Hier ist die erste Variante zu bevorzugen, da Sie direkt die Größe des Listenfeldes festlegen können.

    Access fügt neuen Listenfeldern immer unmittelbar ein Bezeichnungsfeld hinzu. Manchmal ist das nützlich, aber in der Regel möchten Sie das Bezeichnungsfeld (wenn Sie überhaupt eines benötigen) in eine andere Position relativ zum Listenfeld bewegen.

    Das funktioniert nur, wenn Sie das Bezeichnungsfeld markieren und es dann mit dem Mauszeiger über das schwarze Viereck oben links nehmen und verschieben.

    Da das Nerven kostet, löschen Sie am besten das Bezeichnungsfeld und erstellen ein neues, das nicht an das Listenfeld gebunden ist und sich unabhängig platzieren lässt. Am schnellsten geht das durch Markieren des Bezeichnungsfeldes und Betätigen der Tastenkombinationen Strg + X und Strg + V (ausschneiden und einfügen).

    Datensatzherkunft

    Mit den beiden Eigenschaften Datensatzherkunft (engl. RowSource) und Herkunftstyp (engl. RowSourceType) legen Sie Art und Aussehen der zugrunde liegenden Daten fest.

    Die Eigenschaft Herkunftstyp kennt dabei drei Werte:

  • Tabelle/Abfrage
  • Wertliste
  • Feldliste
  • Alle drei erfordern die Angabe einer Information für die Eigenschaft Datensatzherkunft.

    Es gibt noch eine vierte Variante, für die das nicht gilt: Wenn Sie eine Funktion zum Festlegen der anzuzeigenden Daten verwenden, geben Sie den Funktionsnamen für die Eigenschaft Herkunftstyp an und lassen die Eigenschaft Datensatzherkunft leer.

    Funktionen zum Füllen von Kombinations- und Listenfeldern müssen einem ganz bestimmten Format entsprechen. Weitere Informationen hierzu finden Sie in dem Beitrag Kombinations- und Listenfelder füllen in der Ausgabe 4/2002 oder im PDF-Format auf der Heft-CD.

    Tabellen und Abfragen

    Wenn Sie für die Eigenschaft Herkunftsart den Wert Tabelle/Abfrage auswählen, müssen Sie für die Eigenschaft Datensatzherkunft das gewünschte Objekt aus einer Liste auswählen (siehe Bild 2).

    Alternativ können Sie eine eigene Abfrage erstellen, indem Sie auf die Schaltfläche mit den drei Punkten (…) klicken. Nach der Erstellung der Abfrage können Sie diese wie eine ganz normale Abfrage speichern oder einfach die resultierende SQL-Anweisung als Wert der Eigenschaft beibehalten.

    Feldlisten

    Die beiden Eigenschaften ermöglichen die für manche Fälle wichtige Anzeige aller Felder einer Tabelle. Stellen Sie die Eigenschaft Herkunftsart auf den Wert Feldliste und die Eigenschaft Datensatzherkunft auf den Namen der gewünschten Tabelle ein.

    Bild 2: Datensatzherkunft eines Listenfeldes

    Wertlisten

    Wertlisten enthalten einen oder mehrere Werte, die nicht an Datenobjekte wie Tabellen oder Abfragen gebunden sind. Wenn die Eigenschaft Herkunftsart auf Wertliste eingestellt ist, können Sie der Eigenschaft Datensatzherkunft die gewünschten Daten in Form einer durch Semikola getrennten Liste zuweisen.

    Spalten des Listenfeldes

    In der Grundeinstellung zeigen Listenfelder Daten nur in einer Spalte an. Da die Datensatzherkunft aber oft mehr als nur eine Spalte enthalten wird, können Sie die Konfiguration der Spalten mit den Eigenschaften Spaltenanzahl und Spaltenbreiten vornehmen.

    Bild 3: Listenfeld mit Artikelnummer und -name

    Wenn Sie beispielsweise die Felder Artikel-Nr und Artikelname der Tabelle Artikel in einem Listenfeld anzeigen möchten, stellen Sie die Spaltenanzahl auf den Wert 2 und die Spaltenbreiten auf den Wert 1cm;3cm ein (siehe Bild 3).

    Wenn Sie mehrere Spalten anzeigen, können Sie auf die Angabe der Breite für die letzte Spalte verzichten. Die Breite der letzten Spalte ergibt sich immer durch die Differenz aus der Breite des Listenfeldes und der Gesamtbreite der anderen Spalten. Das gilt nicht, wenn die Listenfeldbreite so klein ist, dass mindestens die letzte Spalte nicht mehr angezeigt wird – in diesem Fall erscheint eine Bildlaufleiste, mit der Sie zu den nicht sichtbaren Spalten scrollen können.

    Reihenfolge der angezeigten Felder

    Listenfelder verwenden für die Felder immer die in der Datensatzherkunft vorgefundene Reihenfolge. Wenn Sie also beispielsweise einige Felder der Tabelle Artikel anzeigen möchten, aber in einer anderen Reihenfolge als dort angegeben, müssen Sie zunächst eine Abfrage mit den Feldern in der richtigen Reihenfolge erstellen.

    Spaltenüberschriften

    In manchen Fällen macht es Sinn, die Feldnamen in Form von Spaltenüberschriften anzuzeigen. Dazu müssen Sie lediglich die Eigenschaft Spaltenüberschriften auf den Wert Ja setzen.

    Spaltennamen sind allerdings oft eher zweckmäßig als schön und sollen dem Anwender sicher nicht als Spaltenüberschrift eines Listenfeldes präsentiert werden. Daher gibt es zwei Möglichkeiten:

  • Sie verzichten auf die eingebauten Spaltenüberschriften und verwenden stattdessen über dem Listenfeld angeordnete Bezeichnungsfelder.
  • Sie bearbeiten die Datensatzherkunft so, dass eine ansprechende Spaltenüberschrift herauskommt.
  • Der erste Vorschlag bietet designtechnisch sicher eine Menge mehr Möglichkeiten, während der zweite sicher leichter zu realisieren ist.

    Geben Sie einfach im Entwurf der Datensatzherkunft (also der Tabelle oder der Abfrage) den gewünschten Wert für die Eigenschaft Beschriftung des Feldes an.

    Wenn Sie als Herkunftsart nicht Tabelle/Abfrage gewählt haben, müssen Sie bei Aktivieren der Spaltenüberschriften beachten, dass jeweils der erste Eintrag bzw. die ersten Einträge (bei mehreren Spalten) der Datensatzherkunft als Spaltenüberschrift verwendet wird bzw. werden.

    Ausblenden von Spalten

    Wenn Sie nicht alle Felder der Datensatzherkunft im Listenfeld anzeigen möchten, können Sie einzelne Felder ausblenden. Dazu müssen Sie lediglich die Spaltenbreite für die auszublendenden Spalten auf den Wert 0cm setzen.

    Mehrfachauswahl

    Wie Sie sicher beim Herumprobieren bemerkt haben, können Sie in einem Listenfeld auch Einträge markieren.

    In der Standardeinstellung ist nur die Markierung jeweils eines Eintrags möglich. Sie können allerdings auch mehrere Einträge gleichzeitig markieren.

    Dazu stellen Sie die Eigenschaft Mehrfachauswahl einfach auf einen anderen Wert als Keine ein.

    Die Option Einzeln ermöglicht die Auswahl der gewünschten Listenfeldeinträge per Mausklick auf die einzelnen Einträge. Unerwünschte Markierungen deaktivieren Sie mit einem weiteren Mausklick auf den betroffenen Eintrag.

    Mit der Option Erweitert erreichen Sie die gleiche Funktionalität wie z. B. im Windows Explorer. Sie können mehrere aufeinander folgende Einträge durch Anklicken des ersten sowie Anklicken des letzten Eintrages bei gedrückter Umschalttaste auswählen, weitere Einträge bei gedrückter Strg-Taste hinzufügen und auf die gleiche Weise entfernen.

    In der Praxis dienen Listenfelder oft als Bindeglied zwischen dem Suchen von Datensätzen und deren Bearbeitung in weiteren Formularen.

    Mittels unterschiedlicher Text- und Kombinationsfelder lassen sich leicht Such- und Filterkriterien für Abfragen festlegen, deren Ergebnisse in Listenfeldern angezeigt werden.

    über die Ereigniseigenschaften Beim Klicken oder Beim Doppelklicken lassen sich leicht weitere Formulare mit Detailinformationen zu den gewünschten Datensätzen anzeigen.

    Eine weitere Anwendung findet sich in der Anzeige von m:n-Beziehungen. Um die Nordwind-Datenbank weiterhin als Quelle für Beispielanwendungen zu nutzen, lernen Sie im Folgenden eine Anwendung kennen, die der Zuordnung von bestimmten Artikeln zu den entsprechenden Kunden dient.

    Große Firmen haben unter Umständen ein so großes Angebot, dass nicht jedem Kunden alle Artikel angeboten werden. Der eine Kunde mag vielleicht eher exklusive Artikel, während der andere eher große Mengen preisgünstiger Produkte bevorzugt.

    Von Listenfeld zu Listenfeld

    Im folgenden Beispiel legen Sie ein Formular mit zwei Listenfeldern an, die zusammengefasst alle Artikel anzeigen. Je nach dem aktuellen Kunden werden die Artikel entweder im linken oder im rechten Listenfeld angezeigt. Der Benutzer kann die Einträge auf unterschiedliche Weise zwischen den beiden Listenfeldern hin- und herbewegen.

    Hinweis

    Das Beispielformular frmPreislisten finden Sie in den Datenbanken Listenfelder97.mdb und Listenfelder2000.mdb auf der Heft-CD.

    Bild 4: Aufbau der m:n-Beziehung

    Bild 5: Datenherkunft des Listenfeldes lstPreisliste

    Verknüpfungstabelle anlegen

    Zum Speichern der Informationen benötigen Sie eine Verknüpfungstabelle zwischen den beiden Tabellen Artikel und Kunden. Diese Tabelle erhält den Namen tblArtikelKunden.

    Damit erläutern Sie genau, für welche beiden Tabellen die neue Tabelle als Verknüpfungstabelle dient. Sie könnten die Tabelle auch tblPreislisten nennen – unter Umständen wird eine solche Vorgehensweise aber unübersichtlich.

    Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

    Testzugang

    eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

    diesen und alle anderen Artikel mit dem Jahresabo

    Schreibe einen Kommentar