Hallo Christina,
die Sache ist aus VBA nicht ganz so einfach und kann auf
unterschiedlichen Konfigurationen an diversen Sachen scheitern. Ich
habe bei meinen Versuchen etliche Fehlschläge erlitten. Nachfolgende
Funktion sollte (immer) funktionieren:
'********************************************************************************************
'*
openOracle
*
'*
*
'* Funktion: stellt eine Verbindung zur Oracle-DB
her *
'* Parameter: db: globales Datenbank-
Objekt *
'* Rückgabewerte: True: Verbindung wurde
hergestellt *
'* False: Herstellen der Verbindung ist
fehlgeschlagen *
'* Besonderheiten:
-
*
'********************************************************************************************
Public Function openOracle(db As Database) As Boolean
Const errSub = "openOracle"
Dim connect As Boolean
Dim ODBCString As String
Dim versuche As Integer
Dim ret As Variant
Dim rs As Recordset
On Error GoTo Abbruch
connect = False
ODBCString = "ODBC;" & _
"DRIVER={Oracle in OraHome10_2};" & _
"TLO=O;" & _
"PFC=10;" & _
"FWC=F;" & _
"CSR=F;" & _
"MDI=Me;" & _
"MTS=F;" & _
"BAM=IfAllSuccessful;" & _
"FRL=Lo;" & _
"GDE=F;" & _
"RST=T;" & _
"LOB=T;" & _
"FDL=10;" & _
"FRC=10;" & _
"QTO=T;" & _
"FEN=T;" & _
"APA=T;" & _
"NUM=US;" & _
"DBA=W;"
ODBCString = ODBCString & "DBQ=eigenerWert;" & _
"SERVER=eigenerWert;" & _
"UID=eigenerWert;" & _
"DATABASE=eigenerWert;" & _
"PWD=eigenerWert"
Do While Not connect
'ab dem 2. Versuch jeweils eine zusätzliche Sekunde warten
Call Sleep(1000 * versuche)
On Error Resume Next
Set db = DBEngine(0).OpenDatabase("", dbDriverNoPrompt, False,
ODBCString)
If Err.Number <> 0 Then
versuche = versuche + 1
ret = SysCmd(acSysCmdSetStatus, "Verbindung zur Oracle-Datenbank
wird hergestellt ... " & versuche + 1 & ". Versuch")
Else
connect = True
End If
If versuche > 3 Then Exit Do
Loop
On Error GoTo Abbruch
openOracle = connect
ExitFunction:
On Error Resume Next 'ab hier interessieren Fehler nicht mehr,
daher einfach weitermachen
ret = SysCmd(3)
Exit Function
Abbruch:
Call ErrorHandler(errModul, errSub)
Resume ExitFunction 'Gehe zum Aufräumen
End Function
Gruß Jürgen