Domino 9 und frühere Versionen > ND6: Entwicklung

Rückgabewert einer Funktion

(1/2) > >>

Cyberjack:
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

dirk_2909:
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....

DerAndre:
Jepp.

Und das objPersDoc wird in der Aufrufenden Funktion benutzt und in der Aufgerufenen deklariert...

Cyberjack:
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.

koehlerbv:
Wie gesagt, das Problem hatten wir hier schon mehrfach, zum Beispiel hier in diesem Thread. Du bist schlicht über die Vererbung gestolpert ...

Bernhard

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln