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 3/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

Erfahren Sie, was Sie alles mit der Datenblattansicht – vor allem in Unterformularen – anstellen können.

Techniken

Formulare, VBA

Voraussetzungen

Access 2000 oder höher

Beispieldatei

Datenblattansicht.mdb

Shortlink

464

Datenblattansicht aufgebohrt

André Minhorst, Duisburg

Die Datenblattansicht von Access kennt jeder Access-Benutzer: Viele finden diese sogar so praktisch, dass sie ihre Daten direkt in die Datenblattansicht von Tabellen oder Abfragen eingeben. Dies erledigen Sie jedoch besser in Formularen, was allerdings kein Grund ist, auf die Vorzüge der Datenblattansicht zu verzichten. Eher im Gegenteil: Mit ein wenig Finetuning holen Sie alles aus der Datenblattansicht heraus.

Neben Tabellen und Abfragen lassen sich auch Formulare in der Datenblattansicht anzeigen. Dies realisieren Sie ganz einfach über den passenden Wert der Eigenschaft Standardansicht des Formulars. Am schnellsten erstellen Sie ein Formular auf Basis einer Tabelle oder Abfrage in der Datenblattansicht, indem Sie im Datenbankfenster unter Formulare auf Neu klicken, im nun erscheinenden Dialog die Herkunftstabelle oder -abfrage auswählen und doppelt auf den Eintrag AutoFormular: Datenblatt klicken (s. Abb. 1).

pic001.tif

Abb. 1: Am schnellsten erzeugen Sie ein Formular in der Datenblattansicht mit diesem Dialog.

Das Ergebnis überrascht nicht besonders: Es erscheint ein Formular, das genau so aussieht wie die Datenblattansicht der zugrunde liegenden Tabelle oder Abfrage.

Datenblattansicht anpassen

Das per "Schnellschuss" erzeugte Formular übernimmt die Feldnamen der Artikel-Tabelle als Spaltenüberschriften. Dies ist nicht unbedingt gewünscht und kann beispielsweise auf die folgenden beiden Arten geändert werden:

  • Wenn das Formular wie in diesem Fall bereits fertig gestellt ist, können Sie in der Entwurfsansicht die Beschriftungen der Felder anpassen. Wenn Sie wie in Abb. 2 die Beschriftung des Primärschlüsselfeldes von ArtikelID auf ID ändern, zeigt die Datenblattansicht anschließend die Überschrift ID an.
  • pic002.tif

    Abb. 2: Entwurfsansicht eines Formulars mit angepasstem Beschriftungsfeld

  • Falls Sie das Formular neu erstellen, können Sie im Entwurf der zugrunde liegenden Tabelle die Eigenschaft Beschriftung des gewünschten Feldes verwenden, um die passende Beschriftung anzugeben. Diese wird dann sowohl in der Datenblattansicht der Tabelle als auch automatisch beim Neuanlegen des Textfeldes im Formular als Beschriftung eingesetzt.

Steuerelemente in der Datenblattansicht

Die Datenblattansicht eines Formulars erlaubt gegenüber der Formular- und der Endlosansicht kein Anlegen weiterer Steuerelemente.

Das ist kein besonderer Nachteil: Erstellen Sie einfach ein neues Formular, fügen Sie das Formular in der Datenblattansicht als Unterformular hinzu und platzieren Sie die notwendigen Steuerelemente im Hauptformular.

Mit einem solchen Hauptformular sorgen Sie außerdem für die in der Datenblattansicht von Formularen gänzlich fehlenden Ränder.

Wenn Sie eine einfache Schaltfläche zum Schließen des Formulars und einen kleinen Rand hinzufügen, sieht das Formular beispielsweise wie in Abb. 3 aus.

pic003.tif

Abb. 3: Ein Formular in der Datenblattansicht als Unterformular eines weiteren Formulars

Üblicherweise stellt Access den Inhalt eines Datenblatts in der Schriftgröße 10 dar. Diesen Wert können Sie auf zwei Arten ändern:

  • Der Optionen-Dialog hält auf der Registerseite Datenblatt unter Standardschriftart eine Eigenschaft namens Schriftgrad bereit, mit dem Sie die Schriftart für die Datenblattansicht vorgeben können.
  • Wenn Sie eine hiervon abweichende Schriftgröße verwenden möchten, müssen Sie das Formular einzeln öffnen (nicht als Unterformular) und aus dem Kontextmenü der Titelleiste den Eintrag Zeichen auswählen (s. Abb. 4). Das Gleiche funktioniert übrigens auch in der Datenblattansicht von Tabellen und Abfragen.
pic004.tif

Abb. 4: Einstellen der Zeichen-Eigenschaften eines Formulars in der
Datenblattansicht

Daten in der Datenblattansicht
schreibgeschützt anzeigen

Listenfelder setzt man in der Regel ein, wenn man die darin enthaltenen Daten nicht bearbeiten muss.

Das bedeutet nicht, dass Sie die Datenblattansicht nur verwenden können, wenn der Benutzer auch die Daten bearbeiten können soll – im Gegenteil: Sie können auch die Daten in der Datenblattansicht vor unbeabsichtigtem Bearbeiten schützen.

Dazu stellen Sie einfach die Eigenschaft Recordsettyp auf den Wert Snapshot ein.

Etwas störend wirkt allerdings, dass beim Klicken in eines der Textfelder eines Datensatzes die Einfügemarke erscheint und suggeriert, dass man die enthaltenen Daten doch bearbeiten kann.

Das lässt sich leicht verhindern: Sie müssen dazu einfach nur den kompletten Datensatz markieren. Die notwendige Anweisung lautet:

DoCmd.RunCommand acCmdSelectRecord

Dies wirkt sich so aus, als wenn Sie mit der Maus auf den Datensatzmarkierer am linken Rand klicken: Der komplette Datensatz wird mit einem schwarzen Hintergrund versehen und die blinkende Einfügemarke wird ausgeblendet (s. Abb. 5).

pic005.tif

Abb. 5: Eine einfache DoCmd-Methode markiert den aktuellen Datensatz.

Nun müssen Sie nur noch dafür sorgen, dass diese Anweisung auch beim Klick auf jedes der Steuerelemente ausgeführt wird.

Sie könnten jetzt für jedes Steuerelement eine passende Ereignisprozedur anlegen und den Befehl dort einfügen, aber das ist erstens nicht besonders elegant und zweitens eine ziemliche Fleißarbeit.

Steuerelementereignisse abfangen

Also bauen Sie sich zwei Klassen, mit denen vereinfacht Folgendes passiert: Das Formular instanziert beim Öffnen die erste Klasse clsDataSheetForm (s. Listing 1) und weist ihrem Parameter DataSheetForm einen Verweis auf sich selbst zu.

Listing 1: Die Klasse clsDataSheetForm

Option Compare Database

Option Explicit

Private mForm As Access.Form

Private colControls As Collection

Dim mDataSheetControl As clsDataSheetControl

Public Property Set DataSheetForm(frm As Form)

     Dim ctl As Control

     Set mForm = frm

     Set colControls = New Collection

    
For Each ctl In mForm.Controls

    
Select Case ctl.ControlType

    
Case acTextBox, acComboBox, acListBox

     Set mDataSheetControl = New clsDataSheetControl

     Set mDataSheetControl.DataSheetControl = ctl

     colControls.Add mDataSheetControl

    
End Select

    
Next ctl


End Property

Die Klasse verwendet diesen Verweis, um alle Steuerelemente des Formulars zu durchlaufen, die den Typ Textfeld, Kombinationsfeld oder Listenfeld besitzen. Hier kommt die zweite Klasse clsDataSheetControl ins Spiel (s. Listing 2): Die erste Klasse erzeugt für jedes Steuerelement ein Objekt der zweiten Klasse und fügt ihm über die Eigenschaft DataSheetControl einen Verweis auf das jeweilige Steuerelement zu.

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.