Domino 9 und frühere Versionen > ND6: Entwicklung
Problem mit einer Function, keine Rückgabe ohne Debugger
MadMetzger:
Hallo zusammen,
folgende Function liefert mir ohne Debugger nichts zurück, so dass mir bei Verwendung ein "Object Variable not set" um die Ohren gehauen wird. Jedoch lasse ich es mit Debugger laufen funktioniert die Funktion ohne Tadel... Das verstehe ich nicht ganz, warum sich die Funktion mit und ohne Debugger unterschiedlich verhält...
--- Code: ---Function getLocationDocument(locationName As String) As NotesDocument
Dim session As NotesSession
Dim names As NotesDatabase
Dim auview As NotesView
Dim au As NotesDocument
Dim aucoll As NotesDocumentCollection
Const NAME_VIEW_LOCATIONS$ = "Locations"
Set session = New NotesSession
Forall db In session.AddressBooks
If db.Isprivateaddressbook Then
Set names = db
If Not names.IsOpen Then
Call names.Open("","")
End If
Exit Forall
End If
End Forall
Set auview = names.GetView(NAME_VIEW_LOCATIONS$)
Set aucoll = auview.GetAllDocumentsByKey(locationName,True)
Set au = aucoll.GetFirstDocument
Set getLocationDocument = au
End Function
--- Ende Code ---
Untitled:
Ich vermute mal, dass irgend eine Frontendklasse mit der Bearbeitung nicht fertig kommt, bevor deine Funktion bereits aufgerufen wird. Im Debugger lässt du ihr die Zeit die sie braucht (um sich vielleicht zu öffnen) und das Ganze funktioniert.
Kann es sowas sein?
Versuch mal mit MsgBoxen den Ablauf ein wenig zu bremsen und herauszufinden, wo es hakt.
MadMetzger:
Damit konnte ich leider nichts feststellen. Innerhalb der Funktion ist alles in Ordnung, nur kommt leider nichts heraus... Option Declare ist gesetzt, so dass ein Schreibfehler beim Rückgabewert schonmal ausgeschlossen ist.
umi:
--- Code: ---Forall db In session.AddressBooks
If db.Isprivateaddressbook Then
Set names = db
If Not names.IsOpen Then
Call names.Open("","")
End If
Exit Forall
End If
End Forall
--- Ende Code ---
Prüfe doch mal mit if db is nothing ob überhaupt ein DB Objekt gesetzt ist.
koehlerbv:
Du instantiierst innerhalb Deiner Function eine Datenbank und ziehst aus dieser ein Dokument. Das Dokument ist von der Datenbank vererbt.
Diese Datenbank ist aber dem aufrufenden Modul nicht bekannt - daher geht auch das vererbte NotesDocument verloren.
Da der Debugger für Dich diese Objekte "beobachtet", funktioniert die Vererbung dort, nicht aber in einer realen Laufzeitumgebung.
Bernhard
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln