Autor Thema: Problem mit einer Function, keine Rückgabe ohne Debugger  (Gelesen 2594 mal)

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
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
« Letzte Änderung: 26.04.06 - 12:59:28 von MadMetzger »

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: Problem mit einer Function, keine Rückgabe ohne Debugger
« Antwort #1 am: 26.04.06 - 11:29:43 »
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.

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Problem mit einer Function, keine Rückgabe ohne Debugger
« Antwort #2 am: 26.04.06 - 12:12:38 »
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.

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Problem mit einer Function, keine Rückgabe ohne Debugger
« Antwort #3 am: 26.04.06 - 12:29:13 »
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
Prüfe doch mal mit if db is nothing ob überhaupt ein DB Objekt gesetzt ist.
Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Problem mit einer Function, keine Rückgabe ohne Debugger
« Antwort #4 am: 26.04.06 - 12:32:17 »
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

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Problem mit einer Function, keine Rückgabe ohne Debugger
« Antwort #5 am: 26.04.06 - 12:34:54 »
@umi: Es wird ein DB-Objekt ermittelt, ansonsten würde das Script auch schon vorher abstürzen.

Irgendwie ging mein Verdacht mittlerweile in die Richtung. Was kann ich dagegen tun?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Problem mit einer Function, keine Rückgabe ohne Debugger
« Antwort #6 am: 26.04.06 - 12:40:20 »
Übergib der Function ein NotesDatabase-Objekt by reference, welches Du im aufrufenden Modul instantiierst. Damit ist names in beiden Modulen bekannt (und wird durch Deine Function belegt).

HTH,
Bernhard

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Problem mit einer Function, keine Rückgabe ohne Debugger
« Antwort #7 am: 26.04.06 - 12:59:02 »
Übergib der Function ein NotesDatabase-Objekt by reference, welches Du im aufrufenden Modul instantiierst. Damit ist names in beiden Modulen bekannt (und wird durch Deine Function belegt).

Genau damit hat es dann funktioniert. Vielen Dank für die Hilfe!

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Re: Problem mit einer Function, keine Rückgabe ohne Debugger
« Antwort #8 am: 03.05.07 - 12:49:53 »
Sorry das ich hier reinschreibe, das Teil is doch ein TIPP wert oder?
Mir hat es geholfen, habe genau das gesucht!

Super!

Danke

Grüße
Ben
Wer für alles offen ist der kann ja nich ganz dicht sein!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz