Home > Artikel > Ausgabe 5/2011 > Daten in der Endlosansicht von Formularen anzeigen

Daten in der Endlosansicht von Formularen anzeigen

  PDF ansehen

  Download PDF und Beispieldatenbank

Nicht immer soll ein Formular nur einen Datensatz gleichzeitig anzeigen. Manchmal wollen Sie dem Benutzer auch eine Liste mehrerer Datensätze einer Tabelle präsentieren. Dazu gibt es mehrere Möglichkeiten, zum Beispiel die Endlosansicht. Dieser Artikel zeigt Ihnen, wie Sie die Daten einer Tabelle übersichtlich in einem Formular darstellen.

Beispieldatenbank

Die Beispiele zu diesem Artikel finden Sie in der Datenbank 1105_Endlosformular.mdb.

Varianten für die Anzeige mehrerer Datensätze

Grundsätzlich gibt es mehrere Möglichkeiten, Daten in Listenform in einem Formular anzuzeigen:

  • Datenblattansicht in Formularen
  • Endlosansicht in Formularen
  • Listenfeld-Steuerelement
  • nicht in Access eingebaute Steuerelemente wie etwa das ListView-Steuerelement

Die Datenblattansicht haben Sie bereits in einem anderen Zusammenhang kennengelernt: nämlich zur Anzeige von verknüpften Daten in Unterformularen (Formulare für die Dateneingabe – Teil II: Formulare für Daten aus 1:n-Beziehungen). Die Anzeige von Daten in Listenfeldern haben wir in Steuerelemente – Teil II: Das Listenfeld vorgestellt. Im vorliegenden Artikel schauen wir uns nun an, welche Möglichkeiten die Endlosansicht von Formularen bietet.

Artikel im Endlosformular

Für dieses Beispiel sollen die Datensätze einer Tabelle namens tblArtikel in der Endlosansicht eines Formulars angezeigt werden. Dazu führen Sie zunächst die folgenden Schritte durch:

  • Legen Sie ein neues, leeres Formular an.
  • Stellen Sie die Eigenschaft Datenherkunft auf tblArtikel ein.
  • Ändern Sie die Eigenschaft Standardansicht auf Endlosformular ein (siehe Bild 1).
  • Die verschiedenen Icons im Meldungsfenster

    Bild 1: Die verschiedenen Icons im Meldungsfenster

Das waren die Vorbereitungen. Nun geht es an den größten Teil der Arbeit: das Einfügen und Ausrichten der Steuerelemente. Dazu müssen Sie grundsätzlich wissen, dass ein Formular in der Endlosansicht den Detailbereich und die darin enthaltenen Steuerelemente für jeden Datensatz einmal anzeigt. Wieviele Datensätze gleichzeitig sichtbar sind, ohne dass Sie scrollen müssen, hängt von mehreren Faktoren ab. Der erste ist die Höhe des für die Anzeige der Detailbereiche für die einzelnen Datensätze verfügbare Platz, der zweite die Höhe des Detailbereichs für einen Datensatz.

Die Höhe für die Detailbereiche entspricht der Höhe des Formulars minus der Höhe von Formularkopf und Formularfuß, sofern diese beiden Bereiche eingeblendet sind. Um den Formularkopf und -fuß einzublenden, klicken Sie mit der rechten Maustaste auf die Titelzeile des Detailbereichs (siehe Bild 2). Danach erscheinen die beiden Bereiche über- und unterhalb des Detailbereichs (siehe Bild 3). Damit Sie das Zusammenspiel der einzelnen Bereiche genauer kennenlernen, erledigen Sie nun die folgenden Dinge:

Einblenden von Formularkopf und -fuß

Bild 2: Einblenden von Formularkopf und -fuß

Formular mit Formularkopf und -fuß

Bild 3: Formular mit Formularkopf und -fuß

  • Fügen Sie im Formularkopf ein Beschriftungsfeld mit dem Text Artikelübersicht ein (die Schriftgröße können Sie gern auf einen größeren Wert einstellen).
  • Legen Sie im Formularfuß eine Schaltfläche mit der Beschriftung OK und dem Namen cmdOK an.

Fügen Sie im Detailbereich vorerst zwei Felder der in der Datenherkunft angegebenen Tabelle hinzu. Dazu aktivieren Sie am einfachsten die Feldliste mit der Schaltfläche mit der Tastenkombination Alt + F8 und ziehen die zwei Felder ArtikelID und Artikel in den Detailbereich (siehe Bild 4). Nach einem Wechsel in die Formularansicht sieht das Formular wie in Bild 5 aus. Die Inhalte von Formularkopf und Formularfuß werden oben und unten angezeigt, dazwischen erscheint der Detailbereich so oft, wie es der verbleibende Platz zulässt.

Hinzufügen der Felder zum Detailbereich der Entwurfsansicht

Bild 4: Hinzufügen der Felder zum Detailbereich der Entwurfsansicht

Ein Formular mit mehreren Datensätzen in der Endlosansicht

Bild 5: Ein Formular mit mehreren Datensätzen in der Endlosansicht

Wenn Sie einen Datensatz etwa zum Löschen markieren möchten, klicken Sie wie in der Datenblattansicht auf den Datensatzmarkierer links und betätigen die Entfernen-Taste. Zwischen den Datensätzen können Sie wie gewohnt mit den Navigationsschaltflächen unten navigieren.

Hier tritt auch gleich der entscheidende Unterschied zur Datenblattansicht zutage: Sie können die Steuer­elemente zur Anzeige der Feldinhalte des Datensatzes beliebig innerhalb des Detailbereichs anordnen. Und es wird noch besser: Sie können sogar Schaltflächen im Detailbereich unterbringen, die für jeden einzelnen Datensatz angezeigt werden. Damit können Sie dem Benutzer eine Löschen-Schaltfläche anbieten, mit der ein Datensatz ohne vorheriges Selektieren mit dem Datensatzmarkierer gelöscht werden kann. Übrigens erreichen Sie die wechselnde Hintergrundfarbe nur unter Access 2007 und jünger, ältere Access-Versionen bieten dieses Feature noch nicht an.

Daten in Tabellenform im Endlosformular

Wenn Sie die übrigen Felder der Tabelle tblArtikel zum Detailbereich der Entwurfsansicht hinzufügen, wird es dort etwas unübersichtlich. Das ist logisch, denn die Beschriftungsfelder und die eigentlichen Steuerelemente zur Anzeige der Feldinhalte nehmen Platz weg. Zumindest die Beschriftungsfelder können wir aber viel besser anordnen – nämlich im Formularkopf.

Dummerweise lassen sich die Beschriftungsfelder, beispielsweise das mit der Beschriftung ArtikelID, nicht ohne das dazugehörige gebundene Steuerelement in den Formularkopf verschieben. Es gibt jedoch einen Trick, wie Sie es doch schaffen: Markieren Sie eines oder mehrere Beschriftungsfelder. Schneiden Sie diese mit der Tastenkombination Strg + X aus, klicken Sie in den Formularkopf-Bereich und fügen Sie die Steuerelemente dort mit Strg + V wieder ein.

Danach ist ein wenig Feinarbeit nötig, um die Steuerelemente anzuordnen. Tipps zu dieser Aufgabe finden Sie in ?[basics] Steuerelemente ausrichten und skalieren. Anschließend könnte das Formular in der Entwurfsansicht wie in Bild 6 aussehen. Ein Wechsel in die Formularansicht liefert das Formular aus Bild 7.

Aufbau der Steuerelemente für eine Listenansicht im Endlosformular

Bild 6: Aufbau der Steuerelemente für eine Listenansicht im Endlosformular

Die Artikel in der Formularansicht des Endlosformulars

Bild 7: Die Artikel in der Formularansicht des Endlosformulars

Wenn Sie die Steuerelemente angeordnet haben, optimieren Sie noch die Höhe des Detailbereichs. Dies erledigen Sie, indem Sie entweder die Eigenschaft Höhe auf den gewünschten Wert einstellen oder indem Sie die Maus genau am unteren Rand des Detailbereichs platzieren und diesen nach dem Erscheinen des Icons aus Bild 8 nach oben oder unten verschieben.

Höhe des Detailbereichs einstellen

Bild 8: Höhe des Detailbereichs einstellen

Löschen von Datensätzen im Endlosformular

Wie bereits erwähnt, können Sie dem Detailbereich im Endlosformular nicht nur an die Felder der Datenherkunft gebundene Steuerelemente hinzufügen, sondern auch Schaltflächen und andere Steuerelemente. In diesem Fall soll eine Schaltfläche das Löschen von Einträgen vereinfachen. Dies ist wahrscheinlich die intuitivste Variante: Der Benutzer braucht noch nicht einmal den zu löschenden Datensatz zu markieren, sondern klickt einfach nur auf die Löschen-Schaltfläche neben dem betroffenen Datensatz.

Diese Schaltfläche fügen Sie etwa wie in Bild 9 zum Detailbereich hinzu. Sie erhält den Namen cmdLoeschen und die Beschriftung Löschen sowie den Wert [Ereignisprozedur] für die Ereigniseigenschaft Beim Klicken. Nach einem Klick auf die Schaltfläche neben der Eigenschaft Beim Klicken öffnet sich der VBA-Editor und zeigt den leeren Prozedurrumpf an.

Hinzufügen einer Löschen-Schaltfläche zur Detailansicht

Bild 9: Hinzufügen einer Löschen-Schaltfläche zur Detailansicht

Diesem fügen Sie nun eine Anweisung hinzu, die genau den Datensatz löscht, neben dem sich die Löschen-Schaltfläche befindet. Wer glaubt, Sie müssten nun noch ermitteln, welcher Datensatz aktuell markiert ist, irrt sich: Durch den Klick auf die Löschen-Schaltfläche wird der Fokus automatisch auf den Datensatz verschoben, in dessen Detailbereich sich die Schaltfläche befindet. Es reicht dann der Aufruf der allgemein zum Löschen des aktuellen Datensatzes verwendeten Anweisung. Diese sieht im Kontext der Ereignisprozedur wie folgt aus:

Private Sub cmdLoeschen_Click()

     Application.RunCommand acCmdDeleteRecord

End Sub

Hier verwenden Sie prinzipiell die RunCommand-Methode des Application-Objekts, also einen Befehl von Access selbst (Application ist gleichbedeutend mit der aktuell geöffneten Office-Anwendung). Der Parameterwert acCmdDeleteRecord gibt an, dass der aktuelle Datensatz gelöscht werden soll. Wenn Sie diese Anweisung selbst eingeben, werden Sie feststellen, dass es noch viele weitere Parameterwerte für den RunCommand-Befehl gibt.

Optischer Feinschliff

Den Datensatzmarkierer, also die Kästchen links neben dem Detailbereich, benötigen Sie prinzipiell nur, wenn Sie einen Datensatz zum Löschen markieren möchten. Da Sie nun eine Löschen-Schaltfläche zum Datensatz hinzugefügt haben, können Sie den Datensatzmarkierer durch Einstellen der gleichnamigen Eigenschaft auf Nein ausblenden. Damit entledigen Sie sich nicht nur eines unnötigen Details, sondern sorgen gleichzeitig dafür, dass die Elemente des Formulars nun linksbündig dargestellt werden. Bild 10 zeigt, wie das Formular mit und ohne Datensatzmarkierer aussieht. Außerdem können Sie noch horizontale Linien in das Formular einfügen, die beispielsweise als Unterstrich für die Spaltenüberschriften dienen oder die den Formularfuß optisch vom Detailbereich trennt (siehe Bild 11).

Endlosformular mit und ohne Datensatzmarkierer

Bild 10: Endlosformular mit und ohne Datensatzmarkierer

Endlosformular mit Trennlinien

Bild 11: Endlosformular mit Trennlinien

Eine solche Linie fügen Sie hinzu, indem Sie diese in der Toolbox mit den Steuerelementen markieren und dann einfach in den Bereich klicken, dem Sie die Linie hinzufügen möchten. Dadurch wird eine Linie angelegt, die zwar wahrscheinlich zu kurz ist und sich an der falschen Position befindet. Das ist aber kein Problem: Mit den in ?[basics] Steuerelemente ausrichten und skalieren beschriebenen Methoden bringen Sie das Linie-Steuerelement schnell in Form.

Sie können die Linie auch gleich im ersten Schritt positionieren: Dazu drücken Sie die linke Maustaste nach dem Markieren des Linie-Steuerelements in der Toolbox zuerst am Startpunkt herunter, bewegen den Mauszeiger dann zum Zielpunkt und lassen schließlich die Maustaste los. Nach Bedarf können Sie natürlich auch Trennlinien zwischen die einzelnen Datensätze einfügen. Dazu legen Sie einfach eine Linie oben oder unten im Detailbereich an.

OK-Schaltfläche

Die OK-Schaltfläche soll das Formular schließen. Dazu legen Sie für das Ereignis Beim Klicken der Schaltfläche cmdOK die folgende Ereignisprozedur an:

Private Sub cmdOK_Click()

     DoCmd.Close acForm, Me.Name

End Sub