Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Cyberjack am 02.11.06 - 10:13:53

Titel: Rückgabewert einer Funktion
Beitrag von: Cyberjack am 02.11.06 - 10:13:53
Hallo liebe Kollegen,

eigenartige Phänomene passieren....  :-\

ich Habe in einer Script Bibliothek folgende Funktion geschrieben:

Function GetPersonDocument( sUserName As String,sServerName As String) As NotesDocument
' Funktion : GetPersonDocument()
' Aufgabe  : Personendokument aus dem Adressbuch des Servers auslesen
' Übergabe : Username,Servername
' Rückgabe : NotesDocument

   Dim objDatabase As NotesDatabase
   Dim objView     As NotesView
   Dim objSession  As New NotesSession
   Dim objPersDoc  As NotesDocument
   
   'Adressbuch des entsprechenden Servers öffnen
   Set objDatabase = objSession.GetDatabase( sServerName,"names.nsf")
   
   If Not objDatabase.IsOpen Then                  'War nix mit öffnen?
      Set GetPersonDocument = Nothing
   Else
      
      Set objView           = objDatabase.GetView( "People" )
      Set GetPersonDocument = objView.GetDocumentByKey( sUserName )
      
   End If
   
End Function


Diese Funktion wird innerhalb einer anderen Funktion der selben Scriptbibliothek aufgerufen. Hier der Ausschnitt:

      Set objPersonDoc = GetPersonDocument( sUserName,sServerName )
      
      If objPersonDoc Is Nothing Then
         Print "Personendokument von User " & sUserName & " konnte nicht geöffnet werden"
         Call UnlockDocument( objDocument )
         Exit Sub
      End If


Wenn ich das ganze Debugge, dann sehe ich, dass GetPersonDocument auch tatsächlich gesetzt wird. Nuer kommt der Wert
nicht in die Variable objPersonDoc (vom Typ NotesDocument) an  ??? Habe schon Cache gelöscht, aber das brachte nicht den erwarteten Erfolg. Kann hier jemand helfen?

Vielen Dank und Gruss von
Robert

Titel: Re: Rückgabewert einer Funktion
Beitrag von: dirk_2909 am 02.11.06 - 10:20:56
Hallo

Das thema hatten wir schon einige Male hier...

Es legt daran, dass das Datenbankobjectt nicht Global deklariert ist.

Die aufrufende Funktion "kennt" das Doc dann nicht....
Titel: Re: Rückgabewert einer Funktion
Beitrag von: DerAndre am 02.11.06 - 10:24:14
Jepp.

Und das objPersDoc wird in der Aufrufenden Funktion benutzt und in der Aufgerufenen deklariert...
Titel: Re: Rückgabewert einer Funktion
Beitrag von: Cyberjack am 02.11.06 - 10:46:15
Verstehe ich nicht .... Das Objekt, welches ich zurückgebe ist kein Datenbankobjekt sondern ein NotesDocument Objekt. Ausserdem ist in der Aufrufenden Funktion die Variable objPersonDoc und in der Funktion selber heisst das Dingen objPersDoc. Da dieses Teil dort eh nicht verwendet wird, habe ich die Zeile Dim objPersDoc as NotesDocument wieder entfernt.
Titel: Re: Rückgabewert einer Funktion
Beitrag von: koehlerbv am 02.11.06 - 11:01:24
Wie gesagt, das Problem hatten wir hier schon mehrfach, zum Beispiel hier in diesem Thread (http://atnotes.de/index.php?topic=10406.msg130752#msg130752). Du bist schlicht über die Vererbung gestolpert ...

Bernhard
Titel: Re: Rückgabewert einer Funktion
Beitrag von: DerAndre am 02.11.06 - 11:16:07
Oh allgemeiner Lesefehler...

Und Bernhard war schneller...