
Das Ziel dieser Übung ist es zu Lernen, wie man eine Verbindung zu einer Microsoft-Datenbank und einer in VB geschriebenen Anwendung herstellen kann. Am Ende dieser Übung sollte man folgendes beherrschen:
Erstellen einer einfachen Datenbank (mit dem Daten-Manager).
Erstellen einer Oberfläche für die Verbindung zur Datenbank.
Herstellen einer Verbindung zwischen den Feldern der Datenbank und den geeigneten Steuerelementen der Visual Basic-Anwendung.
Der Daten-Manager ist eine Datenbank, der Daten (Informationen) in Feldern speichert, die in Tabellen gruppiert sind. Eine Tabelle ist eine Zusammenstellung von Einträgen, die alle vom gleichen Typ sind und die gleiche Struktur aufweisen. Felder sind die kleinsten ansprechbaren Dateneinheiten. Ähnlich wie die Felder in VB, die beim wahlfreien Datenzugriff definiert werden (z.B. Type... End Type) , müssen im Daten-Manager solche auch festgelegt werden:
Bevor in Visual Basic eine Verbindung zu einer Datenbank eingerichtet werden kann, muß diese Datenbank erstellt werden. Für diese Übung wird eine Datenbank erstellt, die Informationen über Bücher in einer privaten Bibliothek enthalten.
Starten Sie den Daten-Manager (Menü Add-Ins, Menüeintrag Daten-Manager). Wählen sie im Daten-Manager im Menü Datei den Eintrag Neue Datenbank. Geben Sie im folgenden Dialogfeld einen Namen für die Datenbank an (z.B. Buch.mdb), sowie das Verzeichnis, in dem die Datenbank gespeichert werden soll.
Clicken Sie anschließend auf die Schaltfläche Neu. Ein Fenster mit dem Titel Tabelle hinzufügen erscheint.

Geben Sie im Textfeld Namen einen Namen für den Tabellensatz ein (z.B. 'Bücher'). Geben Sie anschließend für die einzelnen Datenfelder jeweils die Feldnamen, den Datentyp und die Datenlänge (bei jenen Variablentypen, dessen Länge festgelegt werden muß, z.B. Text (Zeichenkette)), ein. Folgende Datenfelder soll die Datenbank beinhalten:
| Feldname | Datentyp | Size |
|---|---|---|
| Autor | Text | 30 |
| Titel | Text | 25 |
| Verlag | Text | 20 |
| Ort | Text | 20 |
| Jahr | Integer | N/A |
| Signatur | Text | 10 |
Clicken Sie nach dem Eintragen der Daten für ein Feld die '>'-Schaltfläche, um dieses Datenfeld in die Datenbank zu übernehmen.

Nachdem alle Felder definiert worden sind, clicken Sie OK.

Clicken Sie nun Öffnen, um Daten in die Datenbank einzutragen. Clicken Sie zuerst Hinzufügen, tragen Sie die Daten in die entsprechenden Felder ein, und clicken sie anschließend Aktualisieren, um die Daten in der Datenbank zu speichern. Wenn sie nicht auf Aktualisieren clicken, sind Ihre gerade eingegebenen Daten im aktuellen Datensatz nicht gespeichert!

Für unsere Übung sollten zumindest zwei Datensätze eingegeben werden. Clicken Sie Schließen, wenn Sie alle Daten eingetragen haben, sowie Beenden im Datei-Menü des Daten-Manger. Die Datenbank ist jetzt eingerichtet.
Clicken Sie in der Werkzeugsammlung auf das Daten-Steuerelement
und ziehen Sie auf der leeren Form einen rechteckförmigen längeren Begrenzungsrahmen auf. Als Ergebnis erscheint ein Rechteck mit der Bezeichnung Data1 und je zwei Pfeilen an jedem Ende.

Selbst wenn jetzt die Form über ein Daten-Steuerelement verfügt, weiß Visual Basic noch nicht, auf welche Datenbank zuzugreifen ist. Es könnten mehrere Datenbanken auf dem Datenträger vorhanden sein, weswegen festgelegt werden muß, zu welcher Datenbank die Verbindung hergestellt werden soll. Clicken Sie im Eigenschaften-Fenster des Daten-Steuerelementes auf ‘DatabaseName’ und wählen Sie im anschließend erscheinenden Dialogfeld die zuvor erstellte Datenbank aus (z.B. A:\Buch.mdb).
Nachdem die Datenbank ausgewählt worden ist, kann man VB mitteilen, welche Tabelle daraus benutzt werden soll. Clicken Sie dafür auf den Eintrag 'RecordSource' im Eigenschaften-Fenster, und legen sie dort 'Bücher' fest.
Damit ist ein Daten-Steuerelement erstellt worden, mit dem auf die zuvor in Aufgabe 1 erstellte Datenbank zugegriffen werden kann. Allerdings gibt es noch keine Möglichkeit, irgendwelche Informationen dieser Datenbank zu betrachten oder zu ändern. Hierfür werden einige weitere Steuerelemente benötigt. Bezeichnungsfelder können hinzugefügt werden, die die Daten der einzelnen Felder anzeigen sollen, welche für den Benutzer einen Read-only-Status haben sollen. Mit Textfelder hingegen erhält man auch die Möglichkeit, Daten zu ändern oder zu ergänzen (Lese- und Schreib-Zugriff). Erstellen Sie ein neues Textfeld auf der Form und öffnen Sie dessen Eigenschaften-Fenster. Clicken Sie auf 'DataSource' und wählen Sie Data1 aus dem Kombinationsfeld. Damit wird VB mitgeteilt, daß dieses Steuerelement seine Daten aus dem Datenfeld-Steuerelement Data1 beziehen wird, welches seinerseits zur Datenbank Buch.mdb verbunden ist. Jedoch verarbeitet Data1 die gesamte Datenbank, und das Textfeld möchte nicht die gesamte Datenbank sondern nur ein einzelnes Datenfeld daraus. Clicken Sie dafür auf die Eigenschaft 'DataField' und wählen sie das gewünschte Datenfeld aus dem Kombinationsfeld aus (z.B. Autor).
Wiederholen Sie Schritt 4 bis genügend Steuerelemente zur Verfügung stehen, um alle Informationen der Datenbank anzeigen zu können.
Anstelle der Verwendung des Daten-Steuerelements zur Anwahl der verschiedenen Einträge in der Datenbank können spezielle Recordset-Befehle verwendet werden. Setzen Sie die Visible-Eigenschaft des Daten-Steuerelementes auf False. Jetzt können alternative Schaltflächen ergänzt werden. Schreiben Sie in der Click-Methode den folgenden Code für das Weitergehen zum nächsten Eintrag:
Private Sub cmdVor_Click ()
Data1.Recordset.MoveNext
End Sub
Weitere Befehle:
Fügen Sie eine neue Schaltfläche hinzu und bezeichnen Sie diese mit 'Suchen'. Fügen Sie anschließend den folgenden Code in der Click-Methode ein:
Private Sub cmdSuchen_Click ()
Dim SuchKriterium
SuchKriterium = InputBox$("Geben Sie den zu suchenden Autor ein:", "Suche: Autor")
If Trim$(Suchkriterium) <> "" Then
SuchKriterium = "Autor = '" + SuchKriterium + "'"
Data1.Recordset.FindFirst SuchKriterium
End If
End Sub
Die Zeichenkette "Autor = " wird am Anfang von SuchKriterium hinzugefügt, denn dadurch wird festgelegt, welches Feld in der Datenbank zu durchsuchen ist. Um ein anderes Feld zu durchsuchen, ändern Sie diese Zeichenkette auf einen anderen Feldnamen ab.
Weitere nützliche Befehle:
Data1.Recordset.FindNext - Findet den nächsten übereinstimmenden Eintrag in der aktuellen Tabelle. Benutzen sie diesen nach einem FindFirst-Befehl.
Data1.Recordset.NoMatch - Gibt Wahr zurück, wenn keine Übereinstimmung in der aktuellen Tabelle gefunden wurde, andernfalse ist das Ergebnis Falsch. Benutzen Sie diesen Befehl nach einem FindFirst-Befehl oder nach einem FindNext-Befehl.
Wenn sie durch die Datensätze navigieren, und am Ende der Tabelle angelangt sind, führt ein weiterer Click auf 'Vor >' zunächst zu einem leeren Datensatz, und beim nächsten Click dann zu einem Laufzeitfehler. Um dies vorzubeugen ist ein wenig Arbeit erforderlich.
Setzten Sie zunächst in den Deklarationsabschnitt der Form folgende zwei Zeilen:
Public AnzahlDatensätze Public AktuellerDatensatz
Zunächst muß eine weitere Schaltfläche ergänzt werden, die die Bezeichnung 'Aktivieren' trägt, und die die Aufgabe hat, die Anzahl der Datensätze in der aktuellen Tabelle der Datenbank festzustellen.

Geben Sie in die Click-Methode dieser Schaltfläche nun folgenden Code ein:
Private Sub cmdAktivieren_Click ()
Data1.Recordset.MoveLast
AnzahlDatensätze = Data1.Recordset.RecordCount
cmdVor.Visible = True
cmdZurück.Visible = True
cmdAnfang.Visible = True
cmdEnde.Visible = True
cmdSuchen.Visible = True
cmdVor.Enabled = False
AktuellerDatensatz = AnzahlDatensätze
End Sub
Nach der Bestimmung der Anzahl der Datensätze wird der letzte Datensatz angezeigt. Deshalb muß die Schaltfläche 'Vor' abgeschaltet werden, um nicht über die Grenze der Datenbank hinauszulaufen. Setzen Sie dann die Visible-Eigenschaft aller anderen fünf Schaltflächen auf False.
Zum Programmcode der Schaltfläche 'Vor >' muß folgender Code ergänzt werden (und analog auch bei '< Zurück', mit minus statt plus und mit cmdZurück statt cmdVor bzw. umgekehrt):
AktuellerDatensatz = AktuellerDatensatz + 1 If AktuellerDatensatz = AnzahlDatensätze Then cmdVor.Enabled = False cmdZurück.Enabled = True
Und zum Programmcode der Schaltfläche '<< Anfang' (bzw. mit entsprechend geänderten Einträgen (AnzahlDatensätze statt 1, cmdVor und cmdZurück vertauschen) bei der Schaltfläche 'Ende >>') muß noch folgendes hinzugefügt werden:
AktuellerDatensatz = 1 cmdVor.Enabled = True cmdZurück.Enabled = False
Jetzt werden die Schaltflächen 'Vor >' bzw. '< Zurück' bei Erreichen des letzten bzw. ersten Datensatzes deaktiviert, sodaß ein Click auf diese keine Wirkung hat, und man sich dadurch nicht aus der Datenbank hinausbewegen kann.

Übung 10 (Arbeiten mit Dateien)
Hauptseite
Übung 12 (Multiple Document Interface-Anwendungen)