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.

    Um den gewünschten SQL-Befehl zu erhalten, müssen Sie kein SQL-Profi sein. Gehen Sie einfach folgendermaßen vor:

  • öffnen Sie die Nordwind-Datenbank, die Sie in Ihr Beispielverzeichnis kopiert haben.
  • Klicken Sie im Datenbankfenster auf das Register Abfragen.
  • Erstellen Sie mit dem entsprechenden Befehl eine neue Abfrage in der Entwurfsansicht.
  • Ziehen Sie die drei Tabellen Artikel, Kategorien und Lieferanten in die Entwurfsansicht.
  • Ziehen Sie die gewünschten Felder in das Entwurfsraster. Dazu gehören alle Felder der Tabelle Artikel (mit Ausnahme der Nachschlagefelder) sowie die Felder Lieferant und Kategorie aus den beiden anderen Tabellen.
  • Wählen Sie nun aus der Menüleiste den Befehl Ansicht( SQL-Ansicht aus.
  • Markieren Sie die SQL-Anweisung und kopieren Sie sie in die Zwischenablage.
  • Nachdem Sie die Anweisung in die Zwischenanlage kopiert haben, können Sie die Nordwind-Datenbank schließen.

    Nun müssen Sie die Anweisung noch in die entsprechende Zeile der Prozedur Form_Load einsetzen:

    Ersetzen Sie den Befehl

    rst.Open "Artikel", , , , adCmdTable

    durch die folgende Anweisung, wobei Sie statt dem Platzhalter <SQL-Anweisung> den entsprechenden String einsetzen:

    rst.Open "<SQL-Anweisung>", , , , adCmdTable

    Leider treten mitunter Fehler bei der Bearbeitung langer SQL-Anweisungen auf. Daher sollten Sie im vorliegenden Fall eine Alternative wählen: Legen Sie einfach eine neue Abfrage mit den gewünschten Feldern der drei Tabellen in der Nordwind-Datenbank an und speichern Sie die unter dem Namen qryArtikel. Dementsprechend ersetzen Sie den Platzhalter <SQL-Anweisung> durch den String “qryArtikel”.

    Das angezeigte Ergebnis sieht nun schon ansprechender aus (siehe Bild 6). Leider ist die Spaltenüberschrift etwas misslungen.

    Bild 6: Anzeige der Artikel mit Kategorie und Lieferant

    ändern einer Spaltenüberschrift

    Die überschrift einer Spalte können Sie mit einer einfachen Zuweisung des gewünschten Wertes ändern. Dazu verwenden Sie die Caption-Eigenschaft der gewünschten Spalte. In der Regel sind die Spalten des DataGrid-Steuerelements in der vorliegenden Reihenfolge durchnummeriert. Die Nummerierung beginnt dabei mit der Nummer 0.

    Im vorliegenden Fall müssen Sie also die Spalten 2 und 3 anpassen. Dazu fügen Sie der Prozedur Form_Load des Formulars die folgenden zwei Zeilen hinzu:

    ocxDataGrid.Columns(2).Caption = "Kategorie"
    ocxDataGrid.Columns(3).Caption = "Lieferant"

    Nun stimmen auch die überschriften der angezeigten Spalten(siehe Bild 7).

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

    den kompletten Artikel im PDF-Format mit Beispieldatenbank

    diesen und alle anderen Artikel mit dem Jahresabo

    Schreibe einen Kommentar