Datenbankzugriff

Datenbank anlegen | Datenbankzugriff zur Datenpflege | Datenbank frei handhaben

Oft sollen Daten auf Dauer gesichert und nach und nach ergänzt werden. Ein Beispiel wären Aktienkurse. Wenn es um mehrere Kurse geht, die zur graphischen Darstellung und Analyse herangezogen werden sollen, dann bietet sich eine Datenbank an. (Anmerkung für "normale" Studenten: Excel ist keine Datenbank, obwohl man auch mit Excel Daten sammeln kann; bildlich gesprochen, mit einem Bett auf Rädern kann man auch fahren, mit einem Auto ist man schneller! Die Microsoft-Datenbank heißt Access und ist durchaus ihren Aufgaben gewachsen). Der Zugriff auf Datenbanken wird von einem Assistenten unterstützt, dessen Hilfe man ruhig in Anspruch nehmen sollte. Die wenigen Schritte am Beispiel einer Access-Datenbank zur Verwaltung von sagen wir Datum, Dax und einer Beispielaktie namens Wildau. Was hier beschrieben wird, ist nur der aller-aller-einfachste Zugriff, wir haben alle mal als Baby begonnen!

Datenbank anlegen

Hat nix mit Visual Basic zu tun, muß aber hier zunächst sein. In Stichpunkten:
zum Anfang

Datenbankzugriff zur Datenpflege

Hier bekommen wir Hilfe. Visual Basic bietet einen Assistenten.

Datenbankfenster

Option Explicit
Private Sub cmdHinzufügen_Click()
datPrimaryRS.Recordset.AddNew
End Sub
Private Sub cmdLöschen_Click()
With datPrimaryRS.Recordset
.Delete
.MoveNext
If .EOF Then .MoveLast
End With
End Sub
Private Sub cmdNeulesen_Click()'Dies wird nur für Mehrbenutzeranwendungen benötigt
datPrimaryRS.Refresh
End Sub
Private Sub cmdAktualisieren_Click()
datPrimaryRS.UpdateRecord
datPrimaryRS.Recordset.Bookmark = datPrimaryRS.Recordset.LastModified
End Sub
Private Sub cmdSchließen_Click()
Screen.MousePointer = vbDefault
Unload Me
End Sub
Private Sub datPrimaryRS_Error(DataErr As Integer, Response As Integer)
'An dieser Stelle würde Code zur Fehlerbehandlung stehen
'Wenn Sie Fehler ignorieren möchten, kommentieren Sie die nächste Zeile aus
'Wenn Sie die Fehler auffangen möchten, fügen Sie an dieser Stelle Code ein, um Fehler zu behandeln

MsgBox "Data error event hit err:" & Error$(DataErr)
Response = 0  'Fehler verwerfen
End Sub
Private Sub datPrimaryRS_Reposition()
Screen.MousePointer = vbDefault
On Error Resume Next
'Hierdurch wird die aktuelle Datensatzposition für Dynasets und Snapshots angezeigt
datPrimaryRS.Caption = "Record: " & (datPrimaryRS.Recordset.AbsolutePosition + 1)
End Sub
Private Sub datPrimaryRS_Validate(Action As Integer, Save As Integer)
'An dieser Stelle steht Code zur Überprüfung von Eingaben
'Dieses Ereignis wird ausgelöst, wenn die folgenden Aktionen stattfinden

Select Case Action
Case vbDataActionMoveFirst
Case vbDataActionMovePrevious
Case vbDataActionMoveNext
Case vbDataActionMoveLast
Case vbDataActionAddNew
Case vbDataActionUpdate
Case vbDataActionDelete
Case vbDataActionFind
Case vbDataActionBookmark
Case vbDataActionClose
Screen.MousePointer = vbDefault
End Select
Screen.MousePointer = vbHourglass
End Sub
Private Sub Form_Unload(Cancel As Integer)
Screen.MousePointer = vbDefault 
End Sub


...fenster

 
zum Anfang

Datenbank frei handhaben

Zuerst muß der der Zugriff ermöglicht werden.

Fenster

Damit Visual Basic "lernt", daß es um Datenmanagement geht, damit es z.B. die erforderlichen Datentypen Database und Recordset "lernt", muß zunächst das Steuerelement "Data" eingefügt werden. Da wir es nicht wirklich benutzen wollen, kann man es im Eigenschaftenfenster auf visible = falsesetzen. Weg ist es! Statt der obigen Dateieinträge im Eigenschaftenfenster wird nun diese Arbeit selbst übernommen. Wir wollen auf einen Datensatz (Recordset) der Datenbank (Database) zugreifen. Dazu müssen beide geöffnet werden. In diesem Recordset gibt es die Felder (Fields) mit ihren Namen, hier Datum, DAX und Wildau. Das Lesen oder Schreiben von Werten setzt voraus, daß der Datensatz  und der Feldname angegeben werden.

Beispiel-Deklarationen, die zum Zugriff nötig sind:
Dim db As Database
Dim dy As Recordset
Dim meinTag As Date, neuTag As Date, DAX As Single, Wildau As Currency
Dim xvon As Date, xbis As Date

Datenbank öffnen, Variable für Record definieren
Set db = DBEngine.Workspaces(0).OpenDatabase("h:\rmueller\geld\Depot.mdb")
'hier ein fiktiver Pfad!
Set dy = db.OpenRecordset("Kurse", dbOpenDynaset)
'Recordset zur Tabelle "Kurse" öffnen 
Datumsgrenzen der Eintragungen:
dy.MoveFirst
xvon = dy.Fields("Datum").Value
dy.MoveLast
xbis = dy.Fields("Datum").Value

Lesen der Variablen des ersten Datensatzes:
dy.MoveFirst
meinTag = dy.Fields("Datum").Value
DAX = dy.Fields("DAX").Value
Wildau = dy.Fields("Wildau").Value

Lesen von frei gewählten Werten: Dax vom 12.12.88 (vorausgesetzt es gibt ihn in der Datenbank!)
dy.MoveFirst
For meinTag = xvon To xbis
If meinTag = dy.Fields("Datum") Then
dy.MoveNext
If dy.Fields("Datum") = CDate(12.12.88) Then
DAX = dy.Fields("DAX")
Exit For
End If
End If
Next
Verändern der Werte des letzten vorhandenen Datensatzes:
dy.Edit
'Änderungen ankündigen
dy.MoveLast
'gewünschten Satz wählen, hier den letzten
dy.Fields("Datum").Value = neuTag
'veränderten Datumswert angeben
dy.Fields("DAX").Value = neuDAX
'DAX-Wert verändern
dy.Fields("Wildau").Value = neuWildau
'Wert der Aktie "Wildau" verändern
dy.Update
'Werte sichern (in Datenbank schreiben)
Datensatz aus dem Programm heraus hinzufügen:
dy.AddNew
dy.Fields("Datum").Value = Date

'heutiges Datum (oder Datumsvariable mit gewünschtem Wert)
dy.Fields("DAX").Value = DAX
'heutiger DAX-Wert oder ...
dy.Fields("Wildau").Value = Wildau
dy.Update
dy.close

'Datenbank schließen
zum Anfang

© R. Hirte * 2002