Das Microsoft DataGrid-Steuerelement

Autor: André Minhorst, Duisburg

Die Developer Edition von Office 2000 bietet einige nützliche Tools für den Entwickler. In loser Folge sollen Sie die unterschiedlichen nützlichen Features der ODE kennenlernen. Ein sehr interessantes Tool ist ein neues Steuerelement namens Microsoft DataGrid Control. Es dient zur Anzeige von Daten in Tabellenform innerhalb von Formularen und kann in manchen Fällen das Einbinden von Unterformularen verhindern. Außerdem bietet es einen nicht zu unterschätzenden Vorteil: Seine Datenherkunft und seine Eigenschaften können während der Laufzeit an die jeweiligen Gegebenheiten angepasst werden.

Das Microsoft Datagrid Control dient zur Anzeige von Daten in tabellenähnlichem Format. Wenn Sie bereits einmal eine Auflistung von Daten in einem Formular anzeigen wollten, haben Sie wahrscheinlich eine Vorstellung von den unterschiedlichen Möglichkeiten. Anderenfalls finden Sie in den folgenden Abschnitten einige Alternativen inklusive ihrer Vor- und Nachteile.

Hinweis

Die Beispiele im vorliegenden Beitrag beziehen sich auf die unterschiedlichen Tabellen der Nordwind-Datenbank. Dabei erstellen die meisten Prozeduren eine Verbindung zu der Datenbank. Damit Sie mit Ihrer Beispieldatenbank problemlos die vorgegebenen Prozeduren verwenden können, erstellen Sie bitte in dem gleichen Verzeichnis, in dem sich auch Ihre Beispieldatenbank befindet, eine Kopie der Nordwind-Datenbank.

Datenlisten mit einem Endlosformular anzeigen

Sie können einerseits die Daten mit Hilfe entsprechender Steuerelemente im Detailbereich des Formulars anordnen. Wenn Sie außerdem die Eigenschaft Standardansicht auf den Wert Endlosformular einstellen, erhalten Sie den gewünschten Effekt (siehe Bild 1). Der Nachteil liegt darin, dass Sie weitere Steuerelemente nur ober- oder unterhalb von der Datensatzliste im Kopf- oder Fußbereich anlegen können.

Bild 1: Datensatzliste im Detailbereich

Datenlisten in der Datenblattansicht anzeigen

Das funktioniert auch, in dem Sie einfach die gewünschten Felder aus der Feldliste in den Detailbereich des Formulars ziehen und die Eigenschaft Standardansicht auf den Wert Datenblattansicht einstellen (siehe Bild 2). Auch hier gibt es einen Nachteil: Sie können im Formular gar keine weiteren Steuerelemente mehr anlegen, da es diese nicht anzeigt. Die Alternative ist, das Formular als Unterformular in einem anderen Formular anzulegen und dort die gewünschten Steuerelemente zu platzieren.

Bild 2: Datensätze in der Datenblattansicht

Daten per Listenfeld anzeigen

Die dritte Möglichkeit ist der Einsatz des Listenfeldes. Mit einem Listenfeld lassen sich zwar Daten anzeigen und auch einzelne Datensätze auswählen, aber es ist kein Hinzufügen, Löschen oder Bearbeiten der Daten möglich.

Daten mit dem Microsoft DataGrid-Steuerelement anzeigen

Eine neue Möglichkeit ist die Anzeige von Datenlisten in einem separaten Steuerelement – dem Microsoft DataGrid-Steuerelement.

Hinweis

Das Microsoft DataGrid-Steuerelement ist Bestandteil von Office 2000 Developer sowie von einigen Visual Basic-Paketen. Sie können es problemlos einsetzen, wenn eines der genannten Pakete auf Ihrem Rechner installiert ist.

Um die Funktionsweise des DataGrid-Steuerelements zu testen, erstellen Sie zunächst ein neues Formular. Gehen Sie dann folgendermaßen vor:

  • Wechseln Sie in die Entwurfsansicht des Formulars.
  • Wählen Sie den Menübefehl Einfügen( ActiveX-Steuerelement… aus.
  • Im Dialog ActiveX-Steuerelement wählen Sie den Eintrag Microsoft DataGrid Control, Version 6.0 (OLE DB) aus (siehe Bild 3).
  • Im Detailbereich des Formulars erscheint nun das neue Steuerelement. Bringen Sie es mit der Maus auf die richtige Größe.
  • Bild 3: Dialog zur Auswahl eines ActiveX-Steuerelements

    Bevor Sie weitere Schritte unternehmen, sollten Sie dem Steuerelement zunächst einen sinnvollen Namen zuweisen, z.B. ocxDataGrid.

    Speichern Sie außerdem das Formular unter dem Namen frmArtikelDataGrid.

    DataGrid-Steuerelement mit Daten füllen

    Nun sollen Sie das neue Steuerelement mit Daten füllen. Im Beispiel soll das DataGrid alle Artikel der Tabelle Artikel anzeigen.

    üblicherweise verfügen Steuerelemente über eine oder mehrere Eigenschaften, mit denen man die anzuzeigenden Daten festlegen kann. Wenn Sie die Eigenschaften des DataGrid-Steuerelements anzeigen und in das Register Daten wechseln, finden Sie keine derartige Eigenschaft (siehe Bild 4).

    Bild 4: Daten-Eigenschaften des DataGrid-Steuerelements

    Statt dessen benötigen Sie eine Prozedur zum Zuweisen der gewünschten Daten. Das Formular soll die Prozedur beim Laden aufrufen. Sie müssen die Prozedur also für die Ereigniseigenschaft Beim Laden des Formulars hinterlegen.

    Private Sub Form_Load()
        
        Set rst = New ADODB.Recordset
        Set con = New ADODB.Connection
            
        con.Provider = "Microsoft.jet.oledb.4.0"
        con.CursorLocation = adUseClient
        con.Open CurrentProject.Connection
        
        Set rst.ActiveConnection = con
        rst.CursorType = adOpenStatic
        rst.LockType = adLockOptimistic
        
        rst.Open "qryArtikel", , , , adCmdTable
        
        Set ocxDataGrid.DataSource = rst
        
        Set Me.Recordset = rst
        
    End Sub

    Damit später keine Probleme auftreten, sollten Sie beim Entladen des Formulars – also z.B. wenn Sie es schließen oder in die Entwurfsansicht wechseln – die gesetzten Objektvariablen wieder löschen. Legen Sie daher für die Ereigniseigenschaft Beim Entladen die folgende Prozedur an:

    Private Sub Form_Unload(Cancel As Integer)
        Set rst = Nothing
        con.Close
        Set con = Nothing
    End Sub

    Schließlich fehlt noch die Deklaration der beiden Objektvariablen für die Verbindung und für die Datensatzgruppe. Deklarieren Sie die beiden Variablen am Besten im Kopf des Formularmoduls:

    Dim con As ADODB.Connection
    Dim rst As ADODB.Recordset

    Wenn Sie das Formular nun in der Formularansicht anzeigen, haben Sie bereits ein ordentliches Ergebnis (siehe Bild 5).

    Bild 5: Ein mit Daten gefülltes DataGrid

    Leider können Sie in dieser Form nicht auf die entsprechenden Einträge der Tabellen Lieferanten und Kategorien zugreifen. Dadurch zeigt das DataGrid-Steuerelement nur die Datensatznummern der entsprechenden Tabellen an.

    Hinweis

    Leider können Sie mit dem DataGrid-Steuerelement nur die Inhalte der Felder von Tabellen oder Abfragen anzeigen, nicht aber den Inhalt verknüpfter Tabellen oder eingebettete Objekte.

    Wenn Sie statt der Datensatznummern die Bezeichnungen der Kategorie und des Lieferanten anzeigen möchten, müssen Sie eine geeignete Abfrage erstellen. Die Abfrage soll die Tabellen Artikel, Kategorien und Lieferanten enthalten. Sie haben zwei Möglichkeiten, die gewünschte Abfrage zu verwenden. Entweder Sie erstellen einen geeigneten SQL-String und setzen ihn direkt in die Open-Anweisung ein oder Sie erstellen die Abfrage in der Nordwind-Datenbank selbst und verweisen von der Open-Anweisung aus auf die Abfrage.

    Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

    TestzugangOder bist Du bereits Abonnent? Dann logge Dich gleich hier ein. Die Zugangsdaten findest Du entweder in der aktuellen Print-Ausgabe auf Seite U2 oder beim Online-Abo in der E-Mail, die Du als Abonnent regelmäßig erhältst:

    Schreibe einen Kommentar