|
Access
2007-Datenbank in Visual Studio 2008
|
 |
|
Autor/Einsender: |
|
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.
|
|
|
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 |
|
|
|
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.
|
|
|
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.
|
|
|
|
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. |
|