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:
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:
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