Domino 9 und frühere Versionen > ND8: Entwicklung

Funktion gibt kein Dokument zurück

(1/2) > >>

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