Das bekannte Programm zur optimalen Vorbereitung auf die theoretische Führerscheinprüfung
Access 2007-Datenbank in Visual Studio 2008
Autor/Einsender:   Michael Werner
Anregungen/Tipps an: Michael Werner
Dieses Datenbank-Tutorial zeigt in einer Schritt-für-Schritt-Anleitung, wie eine Access 2007-Datenbank mit einer Tabelle erstellt und dann in einem Visual Studio 2008-Projekt mit Hilfe des "Assistenten zum Konfigurieren  von Datenquellen" eine Datenanbindung erzielt wird.
1. Eine Access 2007-Datenbank erstellen und Tabelle anlegen
2. Die Datenbank über den Assistenten anbinden
3. Die Tabelle an ein DataGridView und an einen Navigator anbinden
4. Ein datengebundenes Formular erstellen
Dabei wird das Drag & Drop-Feature von Visual Studio genutzt, um die Tabelle an ein DataGridView zu binden, ein datengebundenes Eingabeformular zu generieren und ein NavigatorObjekt zu erstellen, mit dem nicht nur durch die Datensätze navigiert, sondern auch die Commands  Insert, Delete und Update gegen die Datenbank ausgeführt werden können.
1. Access-Datenbank erstellen und Tabelle anlegen
Navigieren Sie zum Beispiel unter Vista in den Ordner Benutzer/Dokumente oder in XP entsprechend in den Ordner Eigene Dateien.
  • Mit Rechtsklick im Kontextmenü 
  • Neu/Microsoft Office Access 2007 Datenbank

Legen Sie eine neue Microsoft Office Access 2007 Datenbank an und vergeben der Datendatei den Namen: Address.accdb.

 1.1 Erstellen einer neue Tabelle in der Entwurfsansicht von Access
Öffnen Sie die gerade erstellte Datenbankdatei "Address.accdb". Im Menü Erstellen/Tabelle legen Sie eine neue Tabelle an. Tabellenname: tblAddress
Wechseln Sie in die Entwurfsansicht (Menü Start/Ansicht/Entwurfsansicht) und legen Sie in der Tabelle, unterhalb vom vorgenerierten Feld ID (mit dem Datentyp "Autowert"), weitere 7 Felder mit dem Felddatentyp "Text" an.
Übersicht über die anzulegenden Feldnamen und Felddatentypen
Feldname Felddatentyp
ID Autowert
Nachname Text
Vorname Text
Straße Text
PLZ Text
Ort Text
Telefon   Text
Email Text
Wechseln Sie im Menü Start/Ansicht in die Datenblattansicht und fügen Sie ein paar Adressdaten ein. In unserem Beispielprojekt ist es Mustermann, Max usw.
Speichern und schließen Sie Access.
2. Die Datenbank über den Assistenten anbinden
Legen Sie ein neues VB9-Projekt (Windows Forms Anwendung) in Visual Studio 2008 an, Name hier: "Access2007Datenbank anbinden"
An dieser Stelle holen Sie sich nicht ein DataGridView aus der Toolbox, um es über die Aufgabenliste an eine Datenquelle (die Datenbank) zu binden. Stattdessen wählen Sie im Visual Studio-Menü „Daten/Neue Datenquelle hinzufügen…“.
Nach "Weiter" wählen Sie die Datenverbindung aus. Klicken Sie auf die Schaltfläche "Neue Verbindung..."
Im Dialog "Verbindung hinzufügen" wählen Sie als Datenquelle Microsoft Access-Datenbankdatei (OLE DB). Und über die Schaltfläche "Durchsuchen" wählen Sie die gerade lokal erstellte Datenbank "Address.accdb" aus.
Nach einem positiven Verbindungstest (Schaltfläche "Testverbindung") fügen Sie mit Klick auf die Schaltfläche "Ok" die Datenverbindung hinzu.
Die Access-Datenbank Address.accdb ist eingebunden. Wählen Sie "Weiter". Die Frage im nun folgenden Dialog, ob Sie die lokale Datendatei in das Projekt kopieren wollen, beantworten Sie mit Ja.
Das Ja ist deshalb so wichtig, weil Sie bei „Nein“ die externe Datenbankdatei bei einer Weitergabe des Projektes extra mitliefern und den gespeicherten ConnectionString anpassen müssten. Bei einem Ja brauchen Sie sich um den ConnectionString nicht weiter zu kümmern, auch bei der Weitergabe des Projekts nicht. Die Datenbank wird in das Projekt kopiert. Und beim Ausführen (Debuggen) wird eine Kopie davon in das Ausführungsverzeichnis (bin) kopiert.
Die im nächsten Dialog gestellte Frage "Verbindungszeichenfolge in der Anwendungskonfigurationsdatei speichern?" belassen Sie auf Ja, Verbindung speichern unter: 'AccessConnectionString'.
Der AddressConnectionString wird in den Settings gespeichert (My Project/Einstellungen) als:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Address.accdb”
Nach "Weiter" öffnet sich der Dialog "Datenbankobjekte auswählen". Setzen Sie ein Häkchen vor "Tabellen".
Mit "Fertigstellen" ist die Verbindung zur Access-Datenbank hergestellt und der Assistent zum Konfigurieren der Datenquelle ist beendet.
3. Die Tabelle an ein DataGridView und an einen Navigator anbinden
Auch an dieser Stelle holen Sie sich nicht ein DataGridView aus der Toolbox, um es über die Aufgabenliste an eine Datenquelle (die Datenbank) zu binden.
Stattdessen wählen Sie im Visual Studio-Menü Daten/Datenquelle anzeigen. Sie öffnen damit das Datenquellenfenster.
Und nun der entscheidende Schritt: Im Datenquellen-Fenster markieren Sie die Tabelle tblAddress und ziehen diese per Drag & Drop auf das Formular (Form1.vb).
Mit diesem Drag & Drop der Tabelle auf die Form generiert Visual Studio die Datenbankobjekte für das DataSet, die BindingSource und den TableAdapter und eine Instanz von DataGridView mit dem Namen TblAddressDataGridView.
Im DataGridView werden nun alle in der Datenbanktabelle angelegten Spaltennamen angezeigt (ID, Nachname, Vorname usw.).
Darüber hinaus wird eine Instanz des BindingNavigator erstellt, der an die Tabelle gebunden ist, und legt sich standardmäßig an den oberen Rand des Formulars. Der BindingNavigator ist ein mächtiges Multifunktionsobjekt, das die wichtigsten Basisaktionen einer Datenbankanwendung ermöglicht:
  • ein Navigieren durch die Datensätze (Vor- und Zurück-Symbole)
  • das Hinzufügen neuer Datensätze (gelbes Plus-Symbol +)
  • das Löschen von Datensätzen (rotes Kreuz-Symbol x)
  • das Speichern der geänderten Tabellendaten (Diskettensymbol)

Wenn Sie nun das Projekt starten (Debuggen mit [F5]), werden die gespeicherten Datensätze aus der Tabelle ausgelesen.
Im Hintergrund wurde mit dem Drag & Drop der Tabelle auf das Formular im Code eine Ereignisprozedur angelegt. Wenn Sie sich den Code anzeigen lassen (im Projektmappen-Explorer Form1 markieren und „Code anzeigen“), sehen Sie im Load-Event den folgenden Aufruf:
 
Public Class Form1
  Private Sub Form1_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
     'TODO: Diese Codezeile lädt Daten in die Tabelle
     '"AddressDataSet.tblAddress". Sie können sie bei Bedarf
     'verschieben oder entfernen.
    Me.TblAddressTableAdapter.Fill(Me.AddressDataSet.tblAddress)
  End Sub
End Class
 
Damit werden alle in der Tabelle tblAddress gespeicherten Datensätze (Adressen) in das DataGridView geladen.
4. Ein datengebundenes Formular erstellen
Im selben Projekt fügen Sie eine neue Windows Form hinzu (Menü Projekt/Windows Form hinzufügen…). Im Beispiel heißt dieses Formular EingabeDialog.
Und wieder setzen Sie das Drag & Drop-Feature ein:
Markieren Sie im Datenquellenfenster im AddressDataset die Tabelle tblAddress. Im DropDown-Feld von tblAddress (schwarzer kleiner Pfeil nach unten) wählen Sie Details. Standardmäßig ist dort „DataGridView“ aktiviert. Mit der Einstellung Details bekommen Sie das datengebundene Formular.
Nun ziehen Sie mit gedrückter linken Maustaste die Tabelle tblAddress aus dem Datenquellen-Fenster auf das Formular EingabeDialog. Nach dem Loslassen der Maustaste wird nun von Visual Studio ein vollständiges datengebundenes Formular mit Labels und TextBoxen generiert, die den Spaltennamen der Tabelle entsprechen.
Darüber hinaus wird wieder eine Instanz des BindingNavigator erstellt, der an die Tabelle gebunden ist, und legt sich standardmäßig an die Top-Position des Formulars. Der BindingNavigator ist ein mächtiges Multifunktionsobjekt, das die wichtigsten Basisaktionen ermöglicht:
  • ein Navigieren durch die Datensätze der Tabelle
  • das Hinzufügen neuer Datensätze
  • das Löschen von Datensätzen
  • das Speichern der geänderten Tabellendaten

Folgende Datenbankobjekte wurden instanziert:

  • AddressDataSet
  • TblAddressBindingSource
  • TblAddressTableAdapter
  • TableAdapterManager
  • TblAddressBindingNavigator

Im Hintergrund wurden im Code zwei Ereignisprozeduren angelegt. Mit der Methode Fill werden im Load-Event die Daten aus der Tabelle geladen. Mit dem Click-Event von TblAddressBindingNavigatorSaveItem werden bei einem Klick auf das Speicher-Symbol im Navigator (Diskettensymbol) alle Änderungen in der Datenbank gespeichert (Methode UpdateAll des TableAdapterManagers).

Ein zusätzlicher selbst eingebauter Button (btnOk) bewirkt vor dem Schließen des Formulars ein Speichern aller Änderungen an den Datensätzen.
 
Private Sub TblAddressBindingNavigatorSaveItem_Click(ByVal sender
   As System.Object, ByVal e As System.EventArgs) Handles
   TblAddressBindingNavigatorSaveItem.Click
  'Speichern über das Diskettensymbol des Navigators
  Me.Validate()
  Me.TblAddressBindingSource.EndEdit()
  Me.TableAdapterManager.UpdateAll(Me.AddressDataSet)
End Sub

Private Sub EingabeDialog_Load(ByVal sender As System.Object,
   ByVal e As System.EventArgs) Handles MyBase.Load
   'TODO: Diese Codezeile lädt Daten in die Tabelle
   '"AddressDataSet.tblAddress". Sie können sie bei Bedarf
   'verschieben oder entfernen.
  Me.TblAddressTableAdapter.Fill(Me.AddressDataSet.tblAddress)
End Sub

Private Sub btnOk_Click(ByVal sender As System.Object, ByVal e
   As System.EventArgs) Handles btnOk.Click
   'Alles speichern
  Me.Validate()
  Me.TblAddressBindingSource.EndEdit()
  Me.TableAdapterManager.UpdateAll(Me.AddressDataSet)
   'Schließen
  Close()
End Sub
 
Zur Komplettierung unserer kleinen Datenbank-Anwendung müssen wir noch für zwei Dinge im Startformular Form1 sorgen: Zum einen benötigen wir einen Button, mit dem wir den Eingabe-Dialog öffnen (btnShowEingabeDialog).
 Zum Anderen: Damit nach dem Schließen des Formulars EingabeDialog und dem Aktivieren des Form1-Fensters die Datenänderungen auch sofort im DataGridView angezeigt werden, müssen wir im Ereignis Form1_Activated die Daten neu einlesen:
 
Private Sub btnShowEingabeDialog_Click(ByVal sender As
   System.Object, ByVal e As System.EventArgs) Handles
   btnShowEingabeDialog.Click
  'Den EingabeDialog öffnen
  My.Forms.EingabeDialog.ShowDialog()
End Sub

 'Wird benötigt, um die Änderungen im EingabeDialog anzuzeigen
Private Sub Form1_Activated(ByVal sender As Object, ByVal e
   As System.EventArgs) Handles Me.Activated
   'Daten neu laden
  Me.TblAddressTableAdapter.Fill(Me.AddressDataSet.tblAddress)
End Sub
 
Damit ist das Beispielprojekt soweit abgeschlossen.
Abfragen defnieren
Sie können das Projekt nun beliebig erweitern um weitere Abfragen gegen die Datenbank. Dazu gehen Sie am besten in das Tabellenschema, indem Sie die XSD-Datei AddressDataSet.xsd im Projektmappen-Explorer anklicken (XSD = XML-Schema-Definition). Durch Rechtsklick auf den TableAdapter und „Abfrage hinzufügen“ starten Sie den Konfigurationsassistenten für TableAdapter-Abfragen. Aber dieses Thema bietet sich für ein weiteres Tutorial an, dass zukünftig geschrieben werden kann.
Hinweis
Das Beispielprojekt benötigt ein installiertes Microsoft Office Access 2007 und Visual Studio 2008.
Bei Fragen zu diesem Tutorial nutzen Sie bitte unser VB.Net-Forum.


Download  (105 kB) Downloads bisher: [ 1775 ]

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB-/VBA-Forum | DirectX-Forum | VB.Net | .Net-Forum | Foren-Archiv | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Dienstag, 3. Januar 2012