DAO.Database-Objekt als Rückgabewert
04.10.2006 12:55:56
Chris
Ich würde mir gerne eine DAO.Database-Objekt von einer Funktion zurückgeben lassen. Das ganze sieht folgendermaßen aus (beide Funktionen stehen im gleichen Modul):
Function getDB(ByVal path As String) As DAO.Database
Dim dbe As DAO.DBEngine
Dim ws As DAO.Workspace
Set dbe = New DAO.DBEngine
Set ws = dbe.CreateWorkspace(Name:="Workspace1", UserName:="Admin", Password:="")
Set db = ws.OpenDatabase(path)
Set getDB = db
Set db = Nothing
Set ws = Nothing
Set dbe = Nothing
End Function
Function dbtest()
Dim db As DAO.Database
Dim path As String
path = "<ein valider Pfad zu einer Access DB>"
Set db = getDB(path)
'Set db = Run("getDB", path)
Debug.Print IIf(db Is Nothing, "keine DB", db.Name)
Set db = Nothing
End Function
Dabei über die DB-Engine & einen Workspace zu gehen ist leider absolut essenziell, da im produktiven Betrieb die Datenbanken an eine Arbeitsgruppen Informationsdatei angeschlossen sind.
getDB initialisiert auch wunderbar ein Database-Objekt. Via Debuger kann ich zur Laufzeit der Funktion auf das Objekt zugreifen.
Sobald das Objekt jedoch zurückgegeben wurde, ist es "ungültig" oder "nicht mehr festgelegt".
Auch das benutzer der run-methode zum ausführen der Funktion bringt keine Abhilfe.
Wenn ich in der Funktion "getDB" eine ungesicherte Datenbank via set getDB = openDatabase(
Besten Dank & liebe Grüße
Christian Baum