Acc2003: Aufruf einer neuen Access-Instanz mit GetObject => Automatisierungsfehler / Bibliothek nicht registriert

12/07/2009 - 13:34 von Alberto Luca | Report spam
Hallo Newsgroup,

ich möchte aus einer Access-Instanz eine andere Access-Instanz aufrufen
(Kunden.mde).
Dies habe ich bisher unter Access97 (XP) problemlos durchgeführt.

Nun möchte ich dies unter Access2003 (Vista) ebenfalls durchführen und
bekomme dabei bei "GetObject" folgenden Fehler:
-2147319779: Automatisierungsfehler
Bibliothek nicht registriert

Woran kann's liegen?

Wie kann ich eine (weitere) Access-Instanz aufrufen, jedoch nicht mit
GetObject (LateBinding) sondern mit EarlyBinding?
Falls auf dem Rechner unterschiedliche Access-Versionen installiert sind,
wie wird sichergestellt, dass die "richtige" Access-Version gestartet wird?
(nur mit EaryBinding möglich?)

Coding:
Sub sugCallExtAccess(p_extDB As String, _
p_extAppActiveTitle As String, _
p_extModule As String, _
Optional p_a1 As Variant, _
Optional p_a2 As Variant, _
Optional p_a3 As Variant, _
Optional p_a4 As Variant, _
Optional p_a5 As Variant)
'*************************************************************************
' sugCallExtAccess: Routine einer externen Access-DB aufrufen
'-
' Übergabe: p_extDB: externe AccessDB
' p_extAppActiveTitle: zu aktivierender Titel der Anwendung ("":
keine Aktivierung)
' p_extModule: aufzurufendes Module in ext. Access
' p_a1-p_a5: Aufruf-Parameter
' --
' Dieses Modul ruft eine Routine einer externer Datenbank auf.
'************************************************************************
Const lc_MsgTitle = "sugCallExtAccess"
Dim lstrMsg As String

Dim l_a1 As Variant
Dim l_a2 As Variant
Dim l_a3 As Variant
Dim l_a4 As Variant
Dim l_a5 As Variant

Dim appAcc As Access.Application

' Init (für Errorhandling)
On Error GoTo sugCallExtAccess_ErrInit

If IsMissing(p_a1) Then
l_a1 = ""
Else
l_a1 = CStr(p_a1)
End If
If IsMissing(p_a2) Then
l_a2 = ""
Else
l_a2 = CStr(p_a2)
End If
If IsMissing(p_a3) Then
l_a3 = ""
Else
l_a3 = CStr(p_a3)
End If
If IsMissing(p_a4) Then
l_a4 = ""
Else
l_a4 = CStr(p_a4)
End If
If IsMissing(p_a5) Then
l_a5 = ""
Else
l_a5 = CStr(p_a5)
End If

' Object creieren
On Error GoTo sugCallExtAccess_ErrGetObject
Set appAcc = GetObject(p_extDB)

' Application aufrufen
On Error GoTo sugCallExtAccess_ErrRun
Call appAcc.Run(p_extModule, p_a1, p_a2, p_a3, p_a4, p_a5)

' Application aktivieren
On Error GoTo sugCallExtAccess_ErrAppActivate
If p_extAppActiveTitle <> "" Then 'zu aktivierender Titel übergeben
AppActivate p_extAppActiveTitle, True
End If


sugCallExtAccess_End:
On Error GoTo 0 'Fehlerhandling zurücksetzen
Set appAcc = Nothing
Exit Sub

' Fehlerroutinen
sugCallExtAccess_ErrInit:
lstrMsg = "ALA2XX/sugCallExtAccess_ErrInit: " & vbCrLf & Err.Number & ":
" & Err.Description
lstrMsg = lstrMsg & vbCrLf _
& "p_extDB: " & p_extDB & vbCrLf _
& "p_extAppActiveTitle: " & p_extAppActiveTitle & vbCrLf _
& "p_extModule: " & p_extModule & vbCrLf _
& "l_a1: " & CStr(l_a1) & vbCrLf _
& "l_a2: " & CStr(l_a2) & vbCrLf _
& "l_a3: " & CStr(l_a3) & vbCrLf _
& "l_a4: " & CStr(l_a4) & vbCrLf _
& "l_a5: " & CStr(l_a5)

MsgBox lstrMsg, vbOKOnly + vbCritical, lc_MsgTitle
Resume sugCallExtAccess_End

sugCallExtAccess_ErrGetObject:
lstrMsg = "ALA2XX/sugCallExtAccess_ErrGetObject: " & vbCrLf & Err.Number
& ": " & Err.Description
lstrMsg = lstrMsg & vbCrLf _
& "p_extDB: " & p_extDB & vbCrLf _
& "p_extAppActiveTitle: " & p_extAppActiveTitle & vbCrLf _
& "p_extModule: " & p_extModule & vbCrLf _
& "l_a1: " & CStr(l_a1) & vbCrLf _
& "l_a2: " & CStr(l_a2) & vbCrLf _
& "l_a3: " & CStr(l_a3) & vbCrLf _
& "l_a4: " & CStr(l_a4) & vbCrLf _
& "l_a5: " & CStr(l_a5)

MsgBox lstrMsg, vbOKOnly + vbCritical, lc_MsgTitle
Resume sugCallExtAccess_End

sugCallExtAccess_ErrRun:
lstrMsg = "ALA2XX/sugCallExtAccess_ErrRun: " & vbCrLf & Err.Number & ":
" & Err.Description
lstrMsg = lstrMsg & vbCrLf _
& "p_extDB: " & p_extDB & vbCrLf _
& "p_extAppActiveTitle: " & p_extAppActiveTitle & vbCrLf _
& "p_extModule: " & p_extModule & vbCrLf _
& "l_a1: " & CStr(l_a1) & vbCrLf _
& "l_a2: " & CStr(l_a2) & vbCrLf _
& "l_a3: " & CStr(l_a3) & vbCrLf _
& "l_a4: " & CStr(l_a4) & vbCrLf _
& "l_a5: " & CStr(l_a5)

MsgBox lstrMsg, vbOKOnly + vbCritical, lc_MsgTitle
Resume sugCallExtAccess_End

sugCallExtAccess_ErrAppActivate:
lstrMsg = "ALA2XX/sugCallExtAccess_ErrAppActivate: " & vbCrLf &
Err.Number & ": " & Err.Description
lstrMsg = lstrMsg & vbCrLf _
& "p_extDB: " & p_extDB & vbCrLf _
& "p_extAppActiveTitle: " & p_extAppActiveTitle & vbCrLf _
& "p_extModule: " & p_extModule & vbCrLf _
& "l_a1: " & CStr(l_a1) & vbCrLf _
& "l_a2: " & CStr(l_a2) & vbCrLf _
& "l_a3: " & CStr(l_a3) & vbCrLf _
& "l_a4: " & CStr(l_a4) & vbCrLf _
& "l_a5: " & CStr(l_a5)

MsgBox lstrMsg, vbOKOnly + vbCritical, lc_MsgTitle
Resume sugCallExtAccess_End

End Sub


_____________________
Besten Dank vorab!
Ciao, Alberto
 

Lesen sie die antworten

#1 Mark Doerbandt
12/07/2009 - 14:45 | Warnen spam
Hallo, Alberto,

Alberto Luca:

Falls auf dem Rechner unterschiedliche Access-Versionen installiert sind,
wie wird sichergestellt, dass die "richtige" Access-Version gestartet wird?
(nur mit EaryBinding möglich?)



suche mal den Thread "Ermittlung des Patch-Standes von A2k3 SP3" hier
in dieser Gruppe und darin das Tool von Sascha.

Gruss - Mark

Informationen fuer Neulinge in den Access-Newsgroups unter
http://www.doerbandt.de/Access/Newbie.htm

Bitte keine eMails auf Newsgroup-Beitràge senden.

Ähnliche fragen