Domino 9 und frühere Versionen > ND8: Entwicklung
Funktion gibt kein Dokument zurück
bikerboy:
--- Code: ---%REM
Function getTargetDoc
Description: Comments for Function
%END REM
Function getTargetDoc(doc As NotesDocument) As NotesDocument
Dim dbTarget As NotesDatabase
Dim docResult As NotesDocument
'Zieldatenbank öffnen
Set dbTarget = getTargetDB(doc)
If Not dbTarget Is Nothing Then
'Zieldokument öffnen
Set getTargetDoc = dbTarget.Getdocumentbyunid(CStr(doc.Getitemvalue(FLDTARGETUNID)(0)))
End If
End Function
--- Ende Code ---
Ich weiss das ich die Problemlösung hier mal gesehen habe, aber die Suche zeigt es mir nicht.
Nun zum Problem. die Funktion gibt mir kein Dokument zurück, obwohl Sie Sie zum Exit Function hin ein Dokument im Zugriff hat, also getTargetDoc gesetzt ist.
ascabg:
Hallo,
Weil dbTarget hier in dieser Funktion definiert wird.
Und das Dokument in dieser Db eingestellt wird.
Wird dbTarget durch verlassen der Funktion "vernichtet" folgen dem auch alle von dieser Instanz der Db initiierten Objekte.
Schlagwort: Garbage Collector
Andreas
koehlerbv:
Das NotesDocument in der Function hat nur innerhalb der Function einen "Vater" (NotesDatabase), ausserhalb der Function ist dieser Bezug verloren gegangen - NotesDocument haucht damit sein Leben aus.
Du musst der Function daher auch die NotesDatabase übergeben, die ausserhalb der Function bekannt ist.
Bernhard
Peter Klett:
in solchen Fällen definiere ich die Datenbank (hier dbTarget) entweder global oder übergebe sie als Parameter an die Function
Function getTargetDoc(dbTarget As NotesDatabase, doc As NotesDocument) As NotesDocument
Anscheinend wird der Verweis auf das Dokument mit der Datenbank aus dem Speicher gelöscht, habe das Problem jedenfalls auch schon gehabt, ohne eine Logik darin zu erkennen.
bikerboy:
okay,
also eigentlich alles richtig gemacht, aber durch die NotesLogik eben doch falsch.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln