|
Home - Programmieren - Visual Basic - DataAccessObject (DAO)
Hinweis: Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich. Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren. [Druckansicht] [Als E-Mail senden] [Kommentar verfassen] Voraussetzungen:
DAO bedeutet DataAccessObject, ist also ein Visual Basic Objekt für den Zugriff auf Datenbanken. Dieses Objekt wird immer mehr durch den Nachfolger ADO abgelöst. Einfache Datenbankanwendungen (Adressverwaltung, ...) sind aber mit DAO sehr einfach zu realisieren. Der Datenbankzugriff erfolgt über die Jet Engine, eine Datenbankengine, die den Umgang mit Access Datenbanken ermöglicht. Man kann DAO in Access-VBA oder in Visual Basic 6 verwenden. Die Verbindung mit der Datenbank Das Workspace Objekt Das Workspace Objekt enthält eine Aufzählung aller aktueller Sitzungen der Jet Engine. Eine neue Jet Engine Sitzung wird mit der "CreateWorkspace"-Methode erstellt. Man kann den Namen der Sitzung und optional Username und Passwort für die Sitzung eingeben.
Das Erstellen einer neuen Sitzung ist aber oft überflüssig, da bereits eine Sitzung läuft, wenn das Programm ausgeführt wird. In diesem Falle kann man den Workspace mit dem Index 0 verwenden. Dahinter verbirgt sich die aktuelle Sitzung.
Datenbank öffnenDie Datenbank wird mit dem "Databases"-Objekt angesprochen. In Access ist das Problem wieder einfach zu lösen, man gibt einfach den Index 0 an, der für die aktuell geöffnete Datenbank steht.
Hier wird mit dem neu initialisierten “ws”-Objekt gearbeitet.In Visual Basic muss man noch den Pfad zur Datenbank angeben, die geöffnet werden soll.
Der Pfad wird als String übergeben, wahlweise absolut oder relativ. Die weiteren Parameter kann man im Objektkatalog nachschlagen, der sowohl in der VBA, wie auch in der Visual Basic 6 Umgebung über F2 aufgerufen werden kann.Die Datenbank soll nach der Verwendung wieder geschlossen werden, das übernimmt die "Close"-Methode des "Database"-Objekts.
In kleineren Anwendungen kann man diese Anweisung weglassen, die Datenbankverbindung wird nach dem Verlassen der Prozedur auf jeden Fall verloren gehen. Was man jedoch öffnet, sollte man auch wieder schließen.Das Recordset-Objekt Um Datensatzgruppen ansprechen zu können, verwendet man das "Recordset"-Objekt. Alle Aktionen mit der Datenbank (Abfragen, Datensätze löschen und editieren, ...) werden über dieses Objekt abgewickelt. Zuerst muss ein Recordset geöffnet werden. Dazu dient die "OpenRecordset"-Methode des "Database"-Objekts.
Besonders zu beachten ist die erste Zeile! Sowohl das DAO wie auch ADO haben eine Recordset-Collection!Sowohl der Tabellenname als auch das SQL-Query müssen als String angegeben werden. Um WHERE Bedingungen in ein SQL-Query einzufügen, sollte man zuerst eine Stringvariable deklarieren und diese entsprechend verketten. Ein kleines Beispiel:
Das Query sollte nun je nach Postleihzahl etwa so aussehen:
Hier empfehlen sich ein paar Ausgaben ins Direktfenster. Vor allem bei komplexeren Verkettungen verliert man schnell den Überblick über Leerzeichen usw.Wie wird das Recordset geöffnet? Es gibt mehrere Möglichkeiten um ein Recordset zu öffnen. Hier die drei wichtigsten: dbOpenTable: Hier wird direkt auf die Tabelle zugegriffen. Der Zugriff auf Abfragen ist nicht möglich (auch keine SQL Abfragen). Das Sortieren von Datensätzen ist nicht möglich, da der Zugriff auf die Tabelle so erfolgt wie sie auf der Festplatte abgespeichert ist. Dafür hat dieser Zugriffsmodus auch zwei Vorteile. Der Zugriff ist so schnell wie kein anderer und man braucht sich keine Gedanken zur Aktualisierung zu machen, da direkt in die Tabelle geschrieben wird. dbOpenDynaset: Hier wird eine Abfrage erstellt. Die Datensätze können beliebig gefiltert und sortiert werden. Dieser Zugriff muss jeweils aktualisiert werden, da nicht direkt auf die Tabelle zugegriffen wird. In der Praxis wird diese Variante am häufigsten verwendet. dbOpenSnapshot: Hier wird ein "Schnappschuss" des Recordsets erstellt. Daten können nur angesehen werden, Änderungen sind nicht möglich. Diese Variante eignet sich besonders für Ausgaben von Informationen, da diese Methode sehr schnell ist. Der Datensatzzeiger Anfang und Ende Die Navigation durch die Datensätze erfolgt mit einem Datensatzzeiger, der immer auf einen Datensatz verweist. Es gibt zwei besondere Positionen in einer Abfrage/Tabelle; BOF und EOF. BOF steht für Beginn Of. Diese Position steht vor dem ersten Datensatz. EOF steht für End of. EOF befindet sich nach dem letzten Datensatz. Diese beiden Eigenschaften sind vom Typ Boolean. Der Datensatzzeiger befindet sich bei der Initialisierung des Recordset Objekts an der ersten Stelle. Navigieren Um sich durch ein Recordset zu navigieren, hat man 5 Methoden zur Verfügung (sie gehören alle zum Recordset-Objekt):
Das Durchsuchen eines ganzen Recordsets kann z.B. so aussehen:
Solange das Ende des Recordsets nicht erreicht wurde, wird die Schleife durchlaufen. In der Schleife wird dann bei jedem Durchlauf zum nächsten Datensatz gesprungen, bis der Datensatzzeiger am Ende des Recordsets angelangt ist und die Bedingung nicht mehr erfüllt ist.Felder Ein Feld wird folgendermaßen aufgerufen:
Jedes Feld hat mehrere Eigenschaften. Um mit diesen arbeiten zu können, sollte man mit dem "Field"-Objekt arbeiten.
Die einzelnen Eigenschaften sind im Objektkatalog erläutert.Editieren Um Daten zu aktualisieren, muss zuerst der aktuelle Datensatz in einen Puffer geschrieben werden (dies gilt nur für dbOpenDynaset Recordsets!). Das geschieht mit der "Edit"-Methode.
Der Datensatzzeiger muss sich zu diesem Zeitpunkt natürlich an der richtigen Stelle befinden. Danach kann jedes Feld manuell geändert werden.
Der geänderte Datensatz befindet sich nun immer noch im Pufferbereich. Nun muss er zurück in die Tabelle geschrieben werden. Um die Position muss man sich keine Gedanken machen, der Datensatzzeiger wurde nicht verändert!
Die Update Methode erübrigt sich, wenn man direkt auf die Tabelle zugreift und nicht den Umweg über ein Dynaset nimmt.Löschen Das Löschen von Datensätzen ist sehr einfach, da man nicht auf einen Puffer ausweichen muss.
So wird der aktuelle Datensatz (dort wo sich der Datensatzzeiger befindet) unwiderruflich gelöscht.Datensätze einfügen Das Einfügen von neuen Datensätzen wird von der "AddNew"-Methode übernommen. Hier muss man sich keine Gedanken um den Datensatzzeiger machen, neue Einträge werden stets an das Ende der Tabelle geschrieben.
Die "Update"-Methode ist nur notwendig, wenn man mit einem Dynaset arbeitet.
|
Autoren:04150
Artikel:00819 Glossar:04124 News:13569 Userbeiträge:16268 Queueeinträge:05150
Projektsteuerung statt Anwesenheitskontrolle
MONDroid - your monitoring Solution for Android with PRTG-Support Red-Hosting jetzt mit erweitertem Shop-Webhosting-Angebot [Mehr News]
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
|