.: vb - datenbanktheorie :.
 
abyter.de \\ workshops

Einführung
Bevor ich mit dem Thema Datenbankzugriff selbst programmieren beginne, möchte ich noch etwas Datenbanktheorie einschieben, da man ansonsten einige Dinge beim späteren Programmieren nicht verstehen kann.
Sehr fleißige werden schon im Access-Workshop geschaut haben (und ihn hoffentlich durchgemacht haben), doch auch diese werden in dieser Datenbankeinführung einige Neuigkeiten erfahren.

Der Datenbankzugriff
Erst mal eine grafische Darstellung des Datenbankzugriffs:

grafische Darstellung des Datenbakzugriffs

Zuerst einmal das Lesen von Daten: Aus der Tabelle einer Datenbank wird der mit dem Datensatzzeiger aktuell markierte Datensatz in den Hauptspeicher geladen. Dort befindet sich ein Puffer der die Daten zwischenspeichert. Einer der Aufgaben des Programmierers ist es die Daten in den Puffer zu bekommen und von dem Puffer aus korrekt in der Form anzeigen zu lassen.
Beim Speichern wird der umgekehrte Weg gegangen. Änderungen werden erst in den Puffer im RAM gespeichert. Von da aus werden die Änderungen in den Feldern der Datenbank gesichert.

Der Lesezugriff
Ich möchte nun den lesenden Zugriff auf die Datenbank genau behandeln.
Die Datenbank liegt dem Programmierer vor, zuerst einmal muss er sich um das Puffern des aktuellen Datensatzes in den RAM kümmern. Dies ist eigentlich recht simpel; man benötigt zwei Variablen, die die Verbindung zur Datenbank verstellen. Die eine Variable ist für das öffnen der Datenbank zuständig und die andere für den Zugriff auf die Felder der Datenbank.
Die Variable werden folgendermaßen deklariert:

Dim Db as Database
Dim Tb as Recordset

Die erste Variable ist also sinnigerweise eine Variable vom Typ Database. Der Zugriff auf die Felder der Datenbank wird mit einer Variable vom Typ Recordset vollzogen. Nun zu der Zuweisung der beiden Variablen:

Set Db = OpenDatabase ("db.mdb")
Set Tb = Db.OpenRecordset ("Tab1", dbOpenDynaset)

Bei der ersten Zuweisung ist db.mdb der Name der Datenbank und Db, die vorhin deklarierte Variable. Die zweite Zuweisung sieht schon etwas komplizierter aus. Tab1 ist hier der Tabellenname und Tb die vorhin deklarierte Variable. Das öffnen der Tabelle geht mit dem soeben definierten Objekt DB, dessen Attribut OpenRecordset für das Öffnen einer Tabelle zuständig ist. Das Attribut dbOpenRecordset sorgt dafür, dass die Tabelle als Dynaset geöffnet wird, d.h. Änderungen werden erst beim nochmaligen laden des Dynasetobjekts sichtbar. Dies geschieht, wenn man z.B. einen Datensatz weitergeht.
Mit diesen beiden Anweisungen ist a) die Datenbank geöffnet worden und b) der RAM mit dem aktuellen Datensatz gefüllt worden. Nun müssen die Datensätze des Puffers auf die Form gebracht werden. Dies geht in dem man dem Textfeld folgendes zuweist:
txtName.Text = Tb!Name

Dem Textfeld wird der Inhalt des Datenfeldes im RAM zugewiesen. Die Inhalte der Datenfelder werden im RAM im folgenden Format gespeichert:
Tb!Datenfeldname

Wobei Tb selbstredend die oben deklarierte Variable ist. Mit ! und dem Datenfeldname aus der Tabelle wird der Inhalt in das Textfeld kopiert.

Schreibzugriff
Etwas komplizierter ist da schon der schreibende Zugriff. Im Grunde genommen geht man zwar den entgegengesetzten Weg des lesenden Zugriffs, also:
Tb!Name = txtName.Text

Jedoch sind noch weitere Befehle notwendig um die Daten dann auch in der Datenbank zu speichern. Diese möchte ich nun im Folgenden behandeln.
Das Ändern wird mit zwei Befehlen vollzogen:
Tb.Edit
Tb!Name = txtName.Text
Tb.Update

Tb ist hier wieder die Variable von oben. Mit der ersten Anweisung wird die Tabelle in den Bearbeitungsmodus versetzt, d.h. erst nachdem die Tabelle im Bearbeitungsmodus ist, können Felder verändert werden. Zuvor ist die Tabelle für den schreibenden Zugriff gesperrt. Danach wird die oben beschriebene Zuweisung in das Datenfeld gemacht und mit der letzten Anweisung wird die Änderung mit Update gespeichert und ab dann angezeigt. Der letzte Befehl hängt auch damit zusammen, dass wir den Recordset als Dynaset geöffnet haben.
Das war die Änderung bestehender Datensätze; natürlich kann man auch neue Datensätze in die Tabelle einfügen. Dies geht so:
Tb.AddNew

Jetzt ist an die Tabelle ein neuer Datensatz angehängt worden. Wenn man die Felder dann mit Inhalt gefüllt hat, müsste man die letzte Anweisung incl. der Zuweisung noch mal durchlaufen, damit die Änderungen wirksam werden.
Natürlich ist es auch notwendig Datensätze wieder zu entfernen, die geht damit:
Tb.Delete

Bei diesem Befehl muss man jedoch noch einiges beachten, zum Einen ob es sinnvoll ist, den Befehl ohne Sicherheitsabfrage auszuführen und zum Anderen, dass man den Datensatzzeiger um eins weiterverschieben muss. Vor allem das Letztere birgt Fehlerpotential in sich.

Praxis
Nachdem du nun dich mit der Theorie des Datenbankzugriffs beschäftigt hast, würde ich vorschlagen, dass du dich im nächsten Workshop mit der Praxis auseinandersetzt.


Related Workshops:
Allgemeines \\ Visual Basic Einführung \\ Die Programmierumgebung \\ Programmiergrundlagen \\ Programmieren mit VB \\ Datenbankprogrammierung \\ Datenbankprogrammierung 2 \\ EmbeddedSQL \\ Steuerelemente \\ Api-Funktionen

Workshop als pdf

<Zurück

© by www.abyter.de (Martin Monshausen)