Domino 9 und frühere Versionen > ND6: Entwicklung

Rückgabe neues Doc bei Aufruf aus Function

(1/1)

cococo69:
Hallo,

diesen Code von Matthias (TMC) habe ich geringfügig geändert als Funktion in eine Script-Bibliothek gesteckt.


--- Code: ---Function MailErstellen As Variant
        Dim ws As New NotesUIWorkspace
        Dim uidoc As NotesUIDocument 
        Dim maildb As NotesDatabase
        Dim maildoc As NotesDocument
        Dim profil As NotesDocument
       
        Set uidoc = ws.CurrentDocument 'ui
        Dim thisdoc As NotesDocument
        Set thisdoc = uidoc.Document 'ui
       
        Set maildb = New NotesDatabase("","")
        maildb.OpenMail
        Set profil = maildb.GetProfileDocument("CalendarProfile")
       
        Set maildoc = New NotesDocument(maildb)
        maildoc.Form = "Memo"
        maildoc.Logo = profil.DefaultLogo(0)
        maildoc.Principal = profil.Owner(0)
        maildoc.SendTo =  thisdoc.EMail(0)
       
        Call ws.EditDocument(True, maildoc)
        Set uidoc = ws.CurrentDocument 'ui
        Call uidoc.GotoField("Subject") 
        Set MailErstellen = maildoc
       
End Function
--- Ende Code ---

Nun möchte ich diese Funktion so aufrufen, dass das Mail-Dokument erstellt wird und ich es für weitere Manipulationen im Zugriff habe.

Mein Aufruf:

--- Code: ---Sub Click(Source As Button)
        Dim doc As NotesDocument       
        Set doc = MailErstellen
End Sub
--- Ende Code ---

Fehlermeldung:
Illegal reference to: MAILERSTELLEN

Rufe ich lediglich
MailErstellen
auf, so funktioniert der Code einwandfrei (ein neues Mail wird erstellt), ich habe es aber nicht im Zugriff.

Wie muss ich vorgehen???

Gruß
Armin

ZaLudtske:
Hallo,

damit das Funktioniert mußt du einen Verweis auf die Datenbank als Parameter beim Aufruf der Prozedur übergeben.

MailErstellen(ndbApp as notesdatabase)

Achtung: Diesen Sieteneffekt gibt es noch zwischen vielen anderen Objekten

Rainer

0xse:
Muss er? Er holt sich doch die DB aus dem WS.

Ich würd mal spontan sagen das es der falsche Rückgabetyp ist:
Function MailErstellen As NotesDocument

ZaLudtske:
Hallo,

nein, er muß die Referenz auf die Datenbank übergeben, sonst wird beim Rücksprung die Referenz auf die offene DB gelöscht und der Rückgabewert wird nothing. Das kann man wunderbar im Debugger nachvollziehen.

Anbei noch ein Link auf das Posting, das ich mal ins Forum eingestellt habe.

http://atnotes.de/index.php?topic=30619.0

Rainer

cococo69:

--- Zitat von: 0xse am 07.07.06 - 11:22:44 ---Muss er? Er holt sich doch die DB aus dem WS.

Ich würd mal spontan sagen das es der falsche Rückgabetyp ist:
Function MailErstellen As NotesDocument


--- Ende Zitat ---

Danke Oxse,

das war die Lösung!!!

Gruß
Armin

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln