Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
804to808
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
804to808
804to808
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

DAO.Database-Objekt als Rückgabewert

DAO.Database-Objekt als Rückgabewert
04.10.2006 12:55:56
Chris
Hallo zusammen!
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( Hat jemand eine Idee, woran das liegen könnte?
Besten Dank & liebe Grüße
Christian Baum

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: DAO.Database-Objekt als Rückgabewert
06.10.2006 10:08:34
Micha
Hallo Chris,
ich hab keine Ahnung ob es klappt.
Nur nach meinem Verständnist liegt das Problem beim Beenden des Workspace
Deklariere die Variablen außerhalb der Funktion
Dim db As DAO.Database
Dim ws As DAO.Workspace
Dim dbe As DAO.DBEngine

Function getDB(ByVal path As String)
Set dbe = New DAO.DBEngine
Set ws = dbe.CreateWorkspace(Name:="Workspace1", UserName:="Admin", Password:="")
Set db = ws.OpenDatabase(path)
End Function


Function dbtest()
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

Micha
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige