Bemerkung: Das Archiv mit dem Namen
TeachYourselfSQLData.zip finden Sie unter
http://www.forta.com/books/0672316641/
(auf der Seite unten). Es enthält Beispieldatenbanken zu dem Buch “Teach Yourself
SQL in 10 minutes”, das übrigens trotz des albernen
Titels uneingeschränkt zu empfehlen ist.
Manuelle
Einrichtung für Access 95/97
Zur Einrichtung des Datenbank-Alias starten wir die BDE-Verwaltung und gehen vor wie im Folgenden beschrieben. Es ist das gleiche Vorgehen wie beim Anlegen eines Alias für eine dBASE-Datenbank, nur dass im ersten Dialogfenster als Treiber MSACCESS ausgewählt werden muss.
Abbildung 1: Auswahl des
Treibers für Zugriff auf Access-Datenbank
Abbildung 2: Auswahl der
*.mdb-Datei
Achtung: Leider scheint es nicht
möglich, die BDE-Einstellungen so vorzunehmen, dass sowohl auf Access-95-Datenbanken
als auch auf Datenbanken im Format Access 97 zugegriffen werden kann. Das
hängt offensichtlich damit zusammen, dass die in DLL32 angegebene
Einstellung für alle Datenbanken gilt, die den Treiber MSACCESS verwenden.
Für die Praxis dürfte das verschmerzbar sein, da das ältere
Format wohl immer seltener verwendet wird.
Manuelle
Einrichtung Access 2000 (und neuer)
Voraussetzung:
ODBC-Treiber für Microsoft Access
Für den Zugriff auf Access
2000 benötigen wir die Microsoft Database Access Components
(abgekürzt “MDAC”), weil mit Access 2000 ein neues Datenformat eingeführt
wurde, das der in der BDE mitgelieferte Treiber MSACCESS nicht versteht.
Meines Wissens ist MDAC beim Betriebssystem Windows XP standardmäßig
enthalten, ansonsten muss MDAC ggf. von der Microsoft Webseite heruntergeladen
und installiert werden. Wenn eine neuere Access-Version auf dem Rechner
installiert ist, müsste MDAC ebenfalls bereits vorhanden sein.
ODBC-Datenquelle
einrichten
BDE-Administrator starten, dann im Menü Objekt|ODBC-Verwaltung auswählen.
Auf Schaltfläche Hinzufügen klicken, um eine System-DSN hinzuzufügen.
Kürzer geht es, wenn wir die
ODBC-Verwaltung direkt aufrufen, ohne den Umweg über den BDE-Administrator.
Dann entfallen die Schritte 1 und 9. Die ODBC-Verwaltung findet man in
Windows 2000 und Windows XP über Start | [Einstellungen] | Systemsteuerung
| Verwaltung | Datenquellen (ODBC). Für den Aufruf aus dBASE kann
man die Funktion RUN() verwenden:
run( true, "odbcad32.exe") |
|
Im rechten Fenster (Definition) Mausklick auf den Pfeil im Feld
LANGDRIVER und den gewünschten Treiber (z.B. Access General) auswählen.
Man kann den Treiber auch wieder löschen, es scheint jedoch notwendig,
in der BDE-Verwaltung eine Änderung an der ODBC-Datenbank vorzunehmen
und die Änderung zu speichern (z.B. Rechtsklick und im Kontextmenü
Übernehmen auswählen), damit die Konfiguration gespeichert
wird und anschließend die Datenbank nach Neustart von dBASE zur Verfügung
steht.
Um auszuprobieren, ob alles richtig funktioniert müssen wir dBASE PLUS neu starten.
Wenn die Tabelle sich nicht öffnen
lässt (oder ein Passwort-Dialog erscheint) hat bei der Konfiguration
etwas nicht geklappt. Lesen Sie den Abschnitt Problembehandlung.
Problembehandlung
Wenn beim Öffnen der Access-Datenbank ein Passwort-Dialog erscheint ist das nach meiner Erfahrung ein Hinweis darauf, dass die Konfiguration der ODBC-Datenquelle nicht korrekt bzw. unvollständig ist.
Öffnen Sie noch einmal den BDE-Administrator und dort die ODBC-Verwaltung (Menü Objekt|ODBC-Verwaltung), und gehen Sie zu der gewünschten Registerseite Benutzer-DSN bzw. System-DSN. Klicken Sie auf den Namen der Access-Datenbank (z.B. “Access_ODBC”), dann auf die Schaltfläche Konfigurieren. Das bringt Sie wieder zu dem Dialog ODBC Microsoft Access Setup.
Stellen Sie sicher, dass im Rechteck
Datenbank der Name der Datenbank eingetragen ist. Wenn nicht, auf Button
Auswählen und im Dialog Datenbank auswählen zu dem
Verzeichnis navigieren, in dem sich die Access *.mdb-Datei befindet und
die *.mdb-Datei auswählen. Dann auf OK klicken und ODBC-Verwaltung
sowie BDE-Verwaltung schließen.
Manuelle
Einrichtung mit dem Datenbank-Assistenten von dQuery
Die Einrichtung eines BDE-Alias
für ältere Access-Versionen ist analog, jedoch entfällt
der Schritt 5.
Einrichtung
per Programm
Beispiel:
Alias für Access 97 einrichten
Hierfür können wir auf bdeAliasEx.cc aus der dBASE Users' Function Library (dUFLP) zurückgreifen.
Diese Klasse ist von
bdeAlias.cc abgeleitet.
Die dort enthaltene Methode createAlias()
musste
nur geringfügig modifiziert werden, damit sie auch für die Einrichtung
eines Alias für Access 95/97 verwendet werden kann. Das folgende Beispiel
zeigt die Verwendung. Um das Beispiel anzupassen, einfach den Alias-Namen
und Pfad ändern. Bitte beachten, dass der Pfad den vollständigen
Namen der Access-Datenbank einschließlich der Dateierweiterung (*.mdb)
enthalten muss.
// Klasse laden set procedure to :dUFLP:bdealiasEx.cc additive // Objektinstanz erstellen
// Eigenschaften Name, Pfad und Treiber
zuweisen
// Pfad einschließlich Name der mdb.-Datei!
// Klassenmethode aufrufen
|
|
Abbildung 3: Einrichtung eines BDE-Alias für den Zugriff auf Access 97.
Hiefür benötigen wir
das Programm odbc.prg von
Andreas Beckhaus, das ebenfalls in der dUFLP enthalten ist. Das folgende
Beispiel zeigt die Verwendung. Um das Beispiel anzupassen, einfach den
Alias-Namen und Pfad ändern. Auch hier muss der Pfad den vollständigen
Namen der Access-Datenbank (*.mdb) enthalten.
// BDE-Alias und ODBC-Eintrag für den Zugriff auf MS Access // via ODBC erstellen. // odbc.prg muss im aktuellen Pfad vorhanden sein cAliasName = "Access_ODBC" cPfad = ["C:\Daten\Access\teachsql_2000.mdb"] cTreiber = "Microsoft Access-Treiber (*.mdb)" lSuccess = odbc( cAliasname, cPfad, cTreiber) |
|
Abbildung 4: Beispiel für den Aufruf des Programmes odbc.prg von Andreas Beckhaus.
FAQ
zum Umgang mit Access-Datenbanken
Wie
kann ich eine neue Access-Datenbank erstellen?
Access-Datenbanken verschiedener
Formate können mit Hilfe der Microsoft ODBC-Verwaltung, auch ODBC-Datenquellen-Administrator
genannt, erstellt werden. Access muss dafür nicht installiert sein.
Die ODBC-Verwaltung kann aus dBASE aufgerufen werden mit dem Befehl:
t = run(true,"odbcad32.exe") |
|
Dann kann per Dialog im Register “System-DSN” eine Datenquelle erstellt und konfiguriert werden:
Format der Access-Datenbank | Access-Version | Version der Jet-Engine | BDE-Treiber |
Version 2.x | Access 95 | 3.0 | IDDAO32.DLL |
Version 3.x | Access 97 | 3.x | IDDA3532.DLL |
Version 4.x | Access 2000 | 4.x | — |
Tabelle 1: Formate für Access-Datenbanken
Ein BDE-Alias, der einen ODBC-Treiber
verwendet kann nur in der ODBC-Verwaltung gelöscht werden. Alle in
der ODBC-Verwaltung durchgeführten Änderungen (auch Hinzufügen,
Entfernen von Einträgen) werden von der BDE-Verwaltung beim nächsten
Neustart automatisch übernommen.
Wie
kann ich eine dBase-Tabelle nach MS Access konvertieren?
Voraussetzung ist, dass ein BDE-Alias
für die Access-Datenbank eingerichtet ist. Dann kann die dBASE-Tabelle
in die Access-Datenbank kopiert werden.
close databases open database dbasesamples open database myaccess set database to dbasesamples use :dbasesamples:fish copy to :myaccess:fish |
|
Abbildung 5: dBASE-Tabelle nach Access kopieren (Beispiel in xdml)
Wie kann ich Tabellen aus einer Access-Datenbank nach dBASE kopieren?
Wenn ein Alias eingerichtet ist,
können die Tabellen manuell kopiert werden, analog dem Beispiel im
vorherigen Abschnitt. Das folgende Beispiel zeigt, wie man alle Tabellen
einer Access-Datenbank per Programm in eine bestehende dBASE-Datenbank
kopieren kann.
/* copy_mdb_sample.prg Beispiel: Tabellen aus einer Access-Datenbank (*.mdb) nach dBASE kopieren */ set procedure to :dUFLP:bdeAlias.cc additive local cAccessDB, cDbaseDB, cDestination
// Gewünschte Alias-Namen hier einsetzen
d1 = new database(cAccessDB)
d2 = new database(cDbaseDB)
oAlias = new bdeAlias()
for i = 1 to aTables.Size
// Beim Kopieren von Tabellen
aus einem fremden Datenbankformat
// Clean up
|
|
Ich hoffe, dass diese Beschreibung hilfreich war. Weiterhin viel Spaß mit dBASE!