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

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2002.

Listenfelder von A-Z

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.

Anwendungsbereiche von
Listenfeldern

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

Eigenschaften von Listenfeldern

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 (s. Abb. 1)
  • per Drag & Drop der Schaltfläche in den Formularentwurf
  • Abb. 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 (s. Abb. 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.

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

    Abb. 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 (s. Abb. 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.

    Listenfelder in der Praxis

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

    Abb. 4: Aufbau der m:n-Beziehung

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

    Fügen Sie der Tabelle zwei Felder namens ArtikelID und KundenID hinzu und legen Sie einen Primärindex an, der beide Felder enthält. Auf diese Weise verhindern Sie, dass eine Kombination aus Artikel und Kunde zweimal vorkommt.

    Anschließend definieren Sie noch die Beziehung zwischen den drei Tabellen. Damit in der Verknüpfungstabelle nur solche Daten vorkommen, die den Daten aus den beiden verknüpften Tabellen entsprechen, legen Sie referentielle Integrität gemäß Abb. 4 fest.

    Formular zur Verwaltung der m:n-Beziehung

    Die Auswahl der Artikel je Kunde erfolgt über zwei Listenfelder - eines zur Anzeige der Artikel für die gewünschte Preisliste und eines zur Anzeige aller anderen Artikel.

    Die beiden Listenfelder befinden sich in einem Formular namens frmPreislisten, das an die Tabelle Kunden gebunden ist. Fügen Sie der Detailansicht alle Felder hinzu, die Ihnen in diesem Zusammenhang wichtig erscheinen.

    Anschließend erstellen Sie zwei nebeneinander liegende Listenfelder namens lstPreisliste und lstNichtPreisliste.

    Datenherkunft der Listenfelder

    Die erste Herausforderung ist das Festlegen der Datenherkunft für die beiden Listenfelder. Dazu benötigen Sie noch etwas theoretischen Hintergrund:

    Die Verknüpfungstabelle zur Zuordnung von Datensätzen zweier Tabellen enthält jeweils Wertepaare, die aus den Primärindizes der zu verknüpfenden Datensätze bestehen.

    Nur diese Wertepaare geben verknüpfte Datensätze an, alle anderen möglichen Paare, die nicht in der Tabelle stehen, zeigen nicht verknüpfte Paare.

    Das Listenfeld lstPreisliste soll also alle Artikel enthalten, die über die Tabelle tblArtikelKunden mit dem aktuell im Formular frmPreisliste angezeigten Kundendatensatz verknüpft sind.

    Als Datenherkunft verwenden Sie daher die Abfrage aus Abb. 5. Sie enthält die Felder Kunden-Code und Artikel-Nr aus der Verknüpfungstabelle sowie das Feld Artikelname aus der Tabelle Artikel.

    Als Parameter verwendet die Abfrage den Inhalt des Formularfeldes Kunden-Code.

    Das zweite Listenfeld soll alle Artikel anzeigen, die nicht im ersten Listenfeld erscheinen. Der Aufbau der zugrunde liegenden Abfrage ist nicht ganz trivial: Die Abfrage basiert auf der Tabelle Artikel. Um alle Datensätze dieser Tabelle zu ermitteln, die das erste Listenfeld nicht anzeigt, verwenden Sie eine abgewandelte Version der Datensatzherkunft des ersten Listenfeldes als Unterabfrage. Der Unterschied besteht in der Anzahl der zurückgegebenen Felder der Abfrage - statt der bisherigen drei verwenden Sie nur das Feld Artikel-Nr. Ein Vergleich mit Werten aus einer Unterabfrage kann sich nur auf jeweils einen Wert beziehen.

    Abb. 6: Inhalt der Listenfelder

    Private Sub lstNichtPreisliste_DblClick(Cancel _
        As Integer)

        DoCmd.RunSQL "INSERT INTO " _
        & "tblArtikelKunden(ArtikelID, KundenID) " _
        & "VALUES(" & Me.lstNichtPreisliste & ", '" _
        & Me.Kunden_Code & "')"

        Me.lstNichtPreisliste.Requery

        Me.lstPreisliste.Requery

    End Sub

    Quellcode 1

    Die SQL-Abfrage hat folgendes Aussehen:

    SELECT [Artikel-Nr], Artikelname

    FROM Artikel

    WHERE [Artikel-Nr] Not In (

    SELECT tblArtikelKunden.ArtikelID 

    FROM Artikel 

    INNER JOIN tblArtikelKunden 

    ON Artikel.[Artikel-Nr] 

    = tblArtikelKunden.ArtikelID

    WHERE tblArtikelKunden.KundenID = [Forms]![frmPreislisten]![Kunden-Code])

    Wenn Sie nun noch die Eigenschaften Spaltenanzahl und Spaltenbreiten der beiden Listenfelder auf die Werte 2 und 0cm anpassen, erhalten Sie etwa die in Abb. 6 gezeigte Ansicht.

    Hin- und Herbewegen der Einträge

    Zum Bewegen der Listenfeldeinträge gibt es mehrere Möglichkeiten. Sowohl der Doppelklick auf einzelne Einträge als auch das Markieren von Einträgen und deren Verschieben durch spezielle Schaltflächen sind weit verbreitet.

    Zum Kennenlernen der grundlegenden Technik fügen Sie den Listenfeldern nun eine Funktion zum Verschieben der Einträge per Doppelklick hinzu.

    Dazu legen Sie die Prozedur aus Quellcode 1 für die Ereigniseigenschaft Beim Doppelklicken an. Die Prozedur führt eine Anfügeabfrage aus, die der Tabelle tblArtikelKunden einen neuen Datensatz mit der Kundennummer des aktuellen Kunden und der Artikelnummer des angeklickten Artikels hinzufügt. Anschließend aktualisiert sie die beiden Listenfelder.

    Private Sub lstPreisliste_DblClick(Cancel As Integer)

        DoCmd.SetWarnings False‘

        DoCmd.RunSQL "DELETE FROM tblArtikelKunden " _
            & "WHERE ArtikelID = " & Me.lstPreisliste _
            & " AND KundenID = '" & Me.Kunden_Code & "'"

        Me.lstNichtPreisliste.Requery

        Me.lstPreisliste.Requery

        DoCmd.SetWarnings True

    End Sub

    Quellcode 2

    Abb. 7: Schaltflächen zum Bewegen der Listenfeldeinträge

    Wenn Sie der Preisliste nun per Doppelklick einige Artikel hinzufügen möchten, erscheint möglicherweise eine Meldung, die Sie zur Bestätigung der gewünschten Aktion auffordert.

    Zur Deaktivierung dieser Meldung verwenden Sie die Anweisung

    DoCmd.SetWarnings False

    und zur Aktivierung entsprechend die folgende Anweisung:

    DoCmd.SetWarnings True

    Die beiden Anweisungen platzieren Sie in der Ereignisprozedur vor und nach der entsprechenden SQL-Anweisung.

    Die Prozedur zum Entfernen von Artikeln aus der Preisliste ist genau wie die Prozedur zum Hinzufügen aufgebaut. Sie enthält allerdings eine DELETE-Anweisung zum Entfernen des angeklickten Datensatzes (s. Quellcode 2).

    Die Beispieldatenbank enthält noch vier weitere Schaltflächen, mit denen Sie jeweils den markierten Eintrag und jeweils alle Einträge von einem Listenfeld in das andere bewegen können (s. Abb. 7). Die Prozeduren zur Durchführung dieser Operationen finden Sie im entsprechenden Modul der Beispieldatenbanken Listenfelder97.mdb bzw. Listenfelder2000.mdb.

    Mehrfachauswahl in Aktion

    Am Beispiel der Preisliste lässt sich auch die Mehrfachauswahl in Listenfeldern anschaulich beschreiben.

    Hinweis

    Wenn Sie die Eigenschaft Mehrfachauswahl auf einen anderen Wert als Keine einstellen, können Sie den aktuell ausgewählten Wert nicht mehr als Inhalt des Listenfeldes ausgeben lassen. Dieser hat dann immer den Wert Null. Sie müssen dann zur Ermittlung immer die Auflistung ItemsSelected verwenden. (

    Um eine oder mehrere Einträge zwischen den beiden Listenfeldern zu verschieben, verwenden Sie nun zwei entsprechende Schaltflächen namens cmdAuswahlEntfernen und cmdAuswahlHinzufuegen.

    Hinweis

    Sie finden das Beispielformular frmPreislistenMehrfachauswahl in den Beispieldatenbanken auf der Heft-CD. (

    Bevor Sie überhaupt mehrere Einträge aus den Listenfeldern auswählen können, müssen Sie natürlich die Eigenschaft Mehrfachauswahl der Listenfelder je nach Geschmack auf einen der beiden Werte Einzeln oder Mehrfach einstellen.

    Anschließend füllen Sie die beiden Schaltflächen mit Leben. Das ist nicht so einfach wie im vorherigen Beispiel, bei dem Sie nur den aktuellen Datensatz aus dem Listenfeld auslesen und aus der Datenherkunft löschen bzw. hinzufügen. Da nun nicht mehr nur eines bzw. alle Elemente an der Operation beteiligt sind, benötigen Sie ein Mittel, um die ArtikelID der markierten Artikel zu ermitteln. Da es sich dabei auch um mehrere Artikel handeln kann, liegt das Vorhandensein einer entsprechenden Auflistung nahe.

    Private Sub cmdAuswahlHinzufuegen_Click()

        Dim Eintrag As Variant

        DoCmd.SetWarnings False

        For Each Eintrag In Me.lstNichtPreisliste.ItemsSelected

            DoCmd.RunSQL "INSERT INTO tblArtikelKunden(ArtikelID, KundenID) VALUES(" _
                & Me.lstNichtPreisliste.ItemData(Eintrag) & ", '" _
                & Me![Kunden-Code] & "')"

        Next Eintrag

        DoCmd.SetWarnings True

        Me.lstNichtPreisliste.Requery

        Me.lstPreisliste.Requery

    End Sub

    Quellcode 3

    Verantwortlich für das Speichern der markierten Einträge eines Listenfeldes ist die Auflistung SelectedItems. Die Einträge eines Listenfeldes sind durchnummeriert, wobei die Nummerierung bei 0 beginnt.

    Die Prozedur aus Quellcode 3 zeigt, wie die im Listenfeld lstNichtPreisliste ausgewählten Einträge zur Tabelle tblArtikelKunden hinzugefügt werden.

    Sie verwendet die Variable Eintrag als Index für das Durchlaufen der Einträge der Auflistung ItemsSelected des Listenfeldes. Eine kleine Hürde ist die Ermittlung der Artikelnummer anhand des Index des gewünschten Eintrags. Dazu verwendet die Prozedur den folgenden Ausdruck:

    Me.lstNichtPreisliste.ItemData(Eintrag)

    Der Ausdruck ermittelt den Wert des Eintrags des Listenfeldes, dessen Eigenschaft ItemData den Wert Eintrag hat. Da das Feld ArtikelID die gebundene Spalte des Listenfeldes ist, wird auch dieser Wert zurückgegeben. Die Prozedur zum Entfernen von Einträgen aus der Liste funktioniert ähnlich. Sie finden ihren Quellcode in der Beispieldatenbank.

    Tipps und Tricks

    In den folgenden Abschnitten finden Sie noch einige Hinweise, um die Arbeit mit Listenfeldern effektiver zu machen.

    Anzeige von Daten aus verknüpften Tabellen

    Unter Umständen enthält eine Tabelle nicht alle für das Listenfeld interessanten Daten, da sich diese in verknüpften Tabellen befinden. Ein gutes Beispiel sind die Tabellen Artikel und Lieferanten.

    Die Tabelle Artikel enthält lediglich eine Verknüpfung zur Tabelle Lieferanten, aber nicht den Namen des Lieferanten selbst.

    Um den Lieferantennamen dennoch in einem Listenfeld zusammen mit dem Artikel anzuzeigen, benötigen Sie eine Abfrage mit beiden Tabellen als Datenherkunft.

    Wenn Sie beispielsweise die Felder Artikel-Nr und Artikelname sowie den Namen des Herstellers im Listenfeld anzeigen möchten, gehen Sie folgendermaßen vor:

  • Klicken Sie in das Feld Datensatzherkunft im Eigenschaftsfenster des Listenfeldes und betätigen Sie die nun erscheinende Schaltfläche mit den drei Punkten (...).
  • Klicken Sie im Fenster Tabelle anzeigen doppelt auf die Einträge Artikel und Hersteller.
  • Ziehen Sie die beiden Felder Artikel-Nr und Artikelname aus der Tabelle Artikel sowie das Feld Firma aus der Tabelle Lieferanten in das Entwurfsraster der Abfrage.
  • Stellen Sie die Eigenschaften Spaltenanzahl und Spaltenbreite auf die Werte 3 bzw. 1cm;4cm;4cm ein. (
  • Das Ergebnis können Sie in Abb. 8 betrachten. Alternativ schauen Sie sich einfach das Formular frmVerknuepfteDaten der Beispieldatenbank an.

    Standardwert festlegen

    Abb. 8: Listenfeld mit Daten aus verknüpften Tabellen

    Unter Umständen möchten Sie für ein Listenfeld einen Standardwert festlegen - z. B. den ersten Wert der Liste.

    Dazu legen Sie für die Ereigniseigenschaft Beim Öffnen des Formulars die folgende Prozedur an:

    Private Sub Form_Current()

        Me.lstArtikel = _
            Me.lstArtikel.ItemData(1)

    End Sub

    Der Ausdruck Me.lstArtikel.ItemData(1) gibt den Wert der gebundenen Spalte des ersten Eintrags des Listenfeldes zurück. Weisen Sie dem Listenfeld diesen Wert zu, zeigt das Listenfeld den entsprechenden Eintrag markiert an. Das Beispiel finden Sie im Formular frmStandardwert.

    Zugriff auf unterschiedliche Spalten

    Unter manchen Umständen ist der Zugriff auf eine beliebige Spalte des Listenfeldes erforderlich.

    Wenn Sie z. B. das Listenfeld aus dem vorherigen Beispiel heranziehen und den Firmennamen des Lieferanten für irgendwelche Zwecke benötigen, können Sie diesen mit folgender Prozedur ermitteln, die Sie für die Ereigniseigenschaft Beim Doppelklicken hinterlegen. Dadurch wird der Lieferant per Doppelklick in einem Meldungsfenster ausgegeben:

    Private Sub lstArtikel_DblClick(Cancel _
        As Integer)

        MsgBox Me.lstArtikel.Column(2)

    End Sub

    Der Ausdruck Me.lstArtikel.Column(2) gibt den Inhalt der zweiten Spalte der aktuell ausgewählten Zeile zurück. Die Indexierung der Spalten beginnt bei 0. Das Beispiel finden Sie im Formular frmSpalteAuslesen.

    Ähnlichkeiten mit
    Kombinationsfeldern

    Wer bereits mit Listen- und Kombinationsfeldern gearbeitet hat, konnte vermutlich einige Gemeinsamkeiten feststellen. Das betrifft vor allem solche Eigenschaften, die sich nicht gerade auf Äußerlichkeiten beziehen. Daher können Sie einige Möglichkeiten aus dem Beitrag Kombinationsfelder von A-Z ableiten, den Sie unter anderem auf der Heft-CD der aktuellen Ausgabe finden.

    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:

    Download

    Download

    Die .zip-Datei enthält folgende Dateien:

    Listenfelder97.mdb

    Listenfelder00.mdb

    Beispieldateien downloaden

    Verwandte Beiträge:

    Listenfeld und Details in einem Formular

    Kontextmenüs von A bis Z

    Zugriff auf Daten in Formularen und Steuerelementen

    Das Optionsgruppen-Steuerelement

    TreeView-Elemente im Griff

    Flexible Datumstextfelder

    Tipps und Tricks

    Registersteuerelemente von A-Z

    Individuelle Datenauswahl

    Temporäre Datensatzgruppen

    Access 2007: Bilder und Schaltflächen

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.