PDA

Vollständige Version anzeigen : VBA: Verweise nicht vorhanden


Gast
06.05.2004, 10:40
Hallo !

Habe in einer Datenbank Verweise auf BusinessObjects 5.1 ObjectLibrary und Business Query 5.1 Object Library, damit einige User direkt eine BusinessObjects-Abfrage aufrufen können.
Es gibt aber auch User, die das Programm Business Objects nicht instaliert haben (sie sollen diese Funktion in der DB auch nicht nutzen). Beim Schliessen der DB erhalten sie jedoch 2 Fehlermeldungen, die besagen dass die oben genannten Verweise nicht vorhanden sind. Diese Fehlermeldungen lassen sich zwar mit OK schliessen und essen somit kein (oder nur wenig) Brot, etwas nervig ist es aber schon. Wie könnte ich das abschalten ohne auf den jeweiligen Rechnern BusinessObjects zu installieren ?

Beste Grüsse,
Udo

strausto
06.05.2004, 10:53
...

On error resume next
....
if err.number>0 then err.clear
....

Gast
06.05.2004, 11:40
hmmm - bin grad überfordert: und wohin soll ich den Code schreiben ?

strausto
06.05.2004, 11:52
In welchem Event wird der Error generiert?

Gast
06.05.2004, 12:52
Hallo Torsten,

habe einem Button das Ereignis "Anwendung beenden" zugewiesen. Dabei tritt der Fehler auf.
Der zugehörige Code sieht so aus:

Private Sub Datenbank_schliessen_Click()
On Error GoTo Err_Datenbank_schliessen_Click

DoCmd.Quit

Exit_Datenbank_schliessen_Click:
Exit Sub

Err_Datenbank_schliessen_Click:
MsgBox Err.Description
Resume Exit_Datenbank_schliessen_Click

End Sub

Gruss Udo

Gast
07.05.2004, 08:45
Hallo nochmal,

habe den ursprünglichen Code des "Schliessen" Buttons abgewandelt, aber es funktioniert nicht. Die beschriebenen Fehlermeldungen kommen immer noch.
Hier der Ursprungscode und der abgewandelte:

1:
Private Sub Datenbank_schliessen_Click()
On Error GoTo Err_Datenbank_schliessen_Click

DoCmd.Quit

Exit_Datenbank_schliessen_Click:
Exit Sub

Err_Datenbank_schliessen_Click:
MsgBox Err.Description
Resume Exit_Datenbank_schliessen_Click

End Sub

2:
Private Sub Datenbank_schliessen_Click()
On Error Resume Next

DoCmd.Quit

Exit_Datenbank_schliessen_Click:
Exit Sub

If Err.Number > 0 Then Err.Clear

End Sub

Hat noch jemand eine Idee ?
Viele Grüsse, Udo

khs-hh
07.05.2004, 08:52
Du musst die Err.number des von Dir beschriebenen Fehlers (steht ja in der fehlermeldung) abfragen, da Du ja nur diesen bestimmten Fehler abfangen willst.

Also am Ansprungpunkt
Err_Datenbank_schliessen_Click:
zuerst diese Nummer abfragen (ohne vorher die MsgBox zu bringen:

If err.number = xxxx (die von Dir ermittelte Nummer) Then
resume ....

Sascha Trowitzsch
07.05.2004, 10:32
Die Fehlermeldung ist höchstwahrscheinlich keine VBA-Fehlermeldung und deshalb wirkt sich On Error Resume Next in keiner Weise aus.

Ich hatte das Phänomen, dass ein fehlernder Verweis erst beim Beenden einer DB bemängelt wird, noch nicht. Aber jedenfalls muss wohl der Verweis erst rausgenommen werden, bevor beendet wird.
Also könntest du mal versuchen, in den Beenden-Code dieses einzufügen:


Private Sub Datenbank_schliessen_Click()
On Error Resume Next

References.Remove References("BusinessObjects")
Doevents
DoCmd.Quit

End Sub


"BusinessObjects" musst du durch den genauen Namen der BusinessObjects-Library ersetzen, wie sie im Objektkatalog angezeigt wird. (Ich kenne das Teil nicht.)

Ciao, Sascha

strausto
07.05.2004, 11:11
wie sie im Objektkatalog angezeigt wird. (Ich kenne das Teil nicht.)


OT

BO Ist eine Produkt welches verschiedene Datenbanken // Server in sogenannte Universen verwaltet und über SQL oder Pivot Abfragen / Berichte generiert.

Ist ein geiles Tool!!

Gast
07.05.2004, 14:29
Hallo Sascha !

Hab´s noch nicht ausprobiert, aber : Wenn ich wie vorgeschlagen die 2 Verweise beim Beenden durch Code entfernen lasse, dann sind sie doch für jeden User entfernt und diejenigen, die sie benötigen, können beim nächsten Aufrufen der Datenbank nicht mehr auf BO-Funktionen zugreifen da die Verweise fehlen....

Oder mach ich da grad einen Denkfehler ???

Vielen Dank und schönes Wochenende (werd jetzt erstmal Feierabend machen :-) )
Udo

strausto
07.05.2004, 14:33
Dann binde Sie beim Öffnen der DB wieder ein und fange einen Möglichen Fehler mit einem Errohandling ab!

Function ReferenceFromFile(strFileName As String) As Boolean
Dim ref As Reference

On Error GoTo Error_ReferenceFromFile
Set ref = References.AddFromFile(strFileName) 'besser die Methode .AddFromGuid verwenden!
ReferenceFromFile = True

Exit_ReferenceFromFile:
Exit Function

Error_ReferenceFromFile:
MsgBox Err & ": " & Err.Description
ReferenceFromFile = False
Resume Exit_ReferenceFromFile
End Function

BodoM
07.05.2004, 14:52
Hallo,

das Problem hatte ich auch vor kurzem (Thema hier im Forum). Ich habe es auch versucht, die fehlerhaften Verweise mit "References.Remove " zu entfernen. Dabei tritt aber das Problem auf, dass sich fehlerhafte Verweise nicht entfernen lassen.
Es darf also gar nicht erst zu einem fehlerhaften Verweis kommen. Letzendlich hatte ich die Nase voll und habe alles auf LateBinding umgestellt.

z.B.
Dim Obj as Object
Set Obj=CreateObject("BusinessObjects") hier muss natürlich der richtige Klassenname stehen (findet man in der Registry).


Gruß Bodo

Gast
11.05.2004, 09:47
Hallo !

Erstmal vielen Dank an alle !!!

Letzendlich hab ich das Problem so einfach gelöst, dass man sich mal wieder fragen muss, warum ich da nicht gleich drauf gekommen bin ;-)

Hab einfach die beiden Dateien, auf die verwiesen wird, aus meinem Laufwerk kopiert, einen gleichen Pfad bei dem User erstellt, der das Programm nicht instaliert hat und die beiden Dateien dorthin kopiert.

Viele Grüsse,
Udo