Opendatabase und Netzlaufwerk

Ich muß innerhalb VBA sehr oft auf eine externe .mdb zugreifen. Also sehr oft
SET RS = OPENDATABASE(„J:\dateiname.mdb“).OPENRECORDSET(„Tabelle“, dbOpenTable).

(Das Ganze muß leider sein, um die SEEK-Methode anwenden zu können, die bekannterweise bei verknüpften Tabellen nicht greift).

And all this takes time!! (jedesmal auf und zu, jedesmal .ldb löschen und schreiben). Gibt’s einen Weg, die Zieldatenbank, auf die zugegriffen wird, während einer Sitzung nur einmal zu öffnen, sodaß das ewige „OpenDatabase“ entfallen kann??

Danke!
Stephan

Hallo Stephan,

wenn du nicht noch irgendwlche stolpersteine drin hast kannst du dein RS und ggf deine DB z.B. beim Start als globale Variable definieren und greife wenn du die seek-methode anwendest auf das RS zu.

Gruss
Nils

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Eine Möglichkeit ist es, in einem Modul die Datenbank als globale Variable zu halten:

Public db As Database

Darauf kannst du dich dann in anderen Modulen oder Klassen beziehen.

Wenn du es ganz sicher machen willst, solltest du db als private deklarieren und z.B. Code nach folgendem Schema für den Zugriff auf die externe Datenbank verwenden.

Public Function OpenRemoteDatabase() As Database
 If db Is Nothing Then
 Set db = OpenDatabase("J:\dateiname.mdb")
 End If

 Set OpenRemoteDatabase = db
End Function

Dein Code würde dann folgendermaßen aussehen:

SET RS =OpenRemoteDatabase.OPENRECORDSET("Tabelle", dbOpenTable)

Dirk

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Das isses! Thanks Dirk & Nils
Die Sache mit der globalen Variablen hat mein Problem bestens gelöst - spürbarer Tempogewinn (wohl so ziemlich alles, was man ohne SQL-Server rausholen kann).

Also: Euch beiden besten Dank!

Gruß
Stephan