Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1068to1072
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
Inhaltsverzeichnis

Returnwert einer Funktion

Returnwert einer Funktion
18.04.2009 19:10:57
pat270881
Hi,
ich habe folgende Funktion geschrieben, die den Connect zur Access-DB herstellen soll.

Private Function connectToDatabase() As ADODB.Connection
Dim DBFullName As String
Dim Cnct As String, Src As String
Dim Connection As ADODB.Connection
Dim Recordset As ADODB.Recordset
Dim Col As Integer
Dim team As String
'Cells.Clear
'   Database information
DBFullName = ThisWorkbook.Path & "\PMO.mdb"
'   Open the connection
Set Connection = New ADODB.Connection
Cnct = "Provider=Microsoft.Jet.OLEDB.4.0; "
Cnct = Cnct & "Data Source=" & DBFullName & ";"
Connection.Open ConnectionString:=Cnct
connectToDatabase = Connection
End Function


Die Funktion soll das Connection Objekt zurückgeben. Aber wenn ich die Funktion ausführe, dann kommt in der folgenden Zeile
connectToDatabase = Connection
folgender Fehler:
Object variable or With block variable not set
Weiss jemand von euch, was hier falsch läuft? :/
lg pat

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Returnwert einer Funktion
18.04.2009 19:17:06
Daniel
HI
mit den Connections kenne ich mich ja nicht so aus, aber vermutlich handelt es sich um ein OBJEKT, bei denen eine Variablenzuweisung mit SET eingeleitet wird, also:

Set connectToDatabase = Connection


ein Stückchen weiter oben im Coder verendest du ja auch SET, um eine Variable vom Datentyp ADODB.Connection zuzuweisen, warum dann nicht auch hier?
Gruß, Daniel

AW: Returnwert einer Funktion
18.04.2009 19:25:11
pat270881
Hi Daniel,
das funktioniert leider nämlich auch nicht. Wenn ich es mit Set versuche kommt folgender Fehler:
Operation is not allowed when the object is closed
Weisst du hier weiter?
lg pat
Anzeige
AW: Sorry, keine Ahnung
18.04.2009 20:15:41
Daniel
deshalb Frage wieder auf, da muss sich jemand anders mit beschäftigen.
aber nochmal ne Vermutung, was passiert eigentlich, wenn du die Zwischenstufe mit Conntection weglässt und gleich mit "connectToDatabase" arbeitest?
btw "Conntection" ist ein Begriff, der von VBA verwendet wird und daher nicht als Variablenname verwendet werden sollte. Dies könnte zu Problemen führen.
Also wenn, dann so :"myConnection" oder "xConnection", so daß keine Verwechslungsgefahr mit dem VBA-Begriff "Connection" besteht.
Gruß, Daniel
AW: Sorry, keine Ahnung
18.04.2009 20:30:51
pat270881
Hallo,
ich habe es mir noch einmal genau angesehen und der angesprochene Fehler vom vorigen Posting tritt nicht in der Funktion auf sondern im Code wo ich die Funktion aufrufe.
Folgende Codezeilen:
Dim MyConnection As ADODB.Connection
Set MyConnection = New ADODB.Connection
MyConnection = connectToDatabase()
MyConnection.Execute "Delete * From Tasks WHERE Org = " & "'" & team & "'"
Der Fehler
Operation is not allowed when the object is closed
tritt bei dem Execute Statement auf. Der Fehler ist mir jedoch nicht ganz klar, weil ich auf das MyConnection Objekt zuvor in der Funktion ja die Open-Methode anwende.
Hat jemand anderes vielleicht eine Idee?
lg pat
Anzeige
AW: Sorry, keine Ahnung
19.04.2009 11:52:55
Rainer
Hhmmm ... bin in dem Thema auch nicht wirklich bewandert, allerdings hatte ich einen ähnlichen Fall geschrieben (ging dabei um die Einrichtung eines PDF-Drucker, bzw. den Zugriff auf dessen Bibliothek) und das ging nur in einem Klassen Modul und mit dem Einbau With Events.
Das sah dann in etwa so aus:
Private WithEvents MyFunction() As xyz.xyz
Aus der Hilfe:
WithEvents Optional. Schlüsselwort, das angibt, daß VarName eine Objektvariable ist, die verwendet wird, um auf Ereignisse zu reagieren, die von einem ActiveX-Objekt ausgelöst wurden. Nur gültig in Klassenmodulen. Sie können mit WithEvents beliebig viele Variablen deklarieren, jedoch keine Datenfelder erstellen. Sie können New nicht zusammen mit WithEvents verwenden .
Vielleicht bringt Dich das ja weiter?
Gruß
Rainer
Anzeige
AW: wie genau?
19.04.2009 12:02:10
pat270881
Salut Rainer,
mir ist das noch nicht ganz klar. Ich habe es jetzt so probiert:
Private WithEvents connectToDatabase() As ADODB.Connection
aber das funktioniert leider nicht, das gibt einen Compile-Error...? :(
lg pat
AW: wie genau?
19.04.2009 13:57:27
Rainer
Wo hast Du die Zeile gesetzt?
Sie muß in einem Klassenmodul stehen, in einem normalen Modul gibt es einen Compiler-Error.
In meinem Fall war es das Modul einer UserForm.
Wenn es das nicht ist, dann habe ich auch keine Ahnung. ;)
Gruß
Rainer
AW: wie genau?
19.04.2009 14:21:56
pat270881
das funktioniert leider auch nicht....wenn ich es in ein Klassenmodul gebe dann akzeptiert er zwar das EventsWith Statement aber dafür hat er dann Probleme in der Methode mit dem ThisWorkbook Statement:
' Database information
DBFullName = ThisWorkbook.Path & "\PMO.mdb"
lg pat
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige