Übung: Arbeiten mit Datenbanken


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:


Daten-Manager

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:


Aufgabe 1 (Erstellen einer Datenbank)

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.

  1. 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.

  2. Clicken Sie anschließend auf die Schaltfläche Neu. Ein Fenster mit dem Titel Tabelle hinzufügen erscheint.


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


  4. Nachdem alle Felder definiert worden sind, clicken Sie OK.


  5. 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!


  6. 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.



    Aufgabe 2 (Erstellen eines Visual Basic-Programms)

    1. 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.


    2. 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).

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

    4. 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).

    5. Wiederholen Sie Schritt 4 bis genügend Steuerelemente zur Verfügung stehen, um alle Informationen der Datenbank anzeigen zu können.



    Weitere Möglichkeiten

    Navigation:

    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:

    Suchen:

    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:

    Verfeinerung:

    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.




    Die Beispiel-Anwendung zum Datenfeld-Steuerelement (Data.zip) können Sie im Download-Abschnitt der Hauptseite finden.


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