Autor Thema: Funktion gibt kein Dokument zurück  (Gelesen 2993 mal)

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Funktion gibt kein Dokument zurück
« am: 10.05.10 - 10:55:18 »
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

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.
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Funktion gibt kein Dokument zurück
« Antwort #1 am: 10.05.10 - 11:04:35 »
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

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Funktion gibt kein Dokument zurück
« Antwort #2 am: 10.05.10 - 11:04:35 »
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

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Funktion gibt kein Dokument zurück
« Antwort #3 am: 10.05.10 - 11:06:52 »
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.

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Funktion gibt kein Dokument zurück
« Antwort #4 am: 10.05.10 - 11:10:19 »
okay,

also eigentlich alles richtig gemacht, aber durch die NotesLogik eben doch falsch.
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Funktion gibt kein Dokument zurück
« Antwort #5 am: 10.05.10 - 11:11:46 »
An der "Noteslogik" liegt das aber nicht  ;)

Bernhard

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Funktion gibt kein Dokument zurück
« Antwort #6 am: 10.05.10 - 11:16:16 »
Hier hatten wir schon mal eine ähnliche Diskussion, wo es um "verschwindende" Dokumentreferenzen geht. Da ist auch ein Link mit weiterführenden Informationen. In einem anderen Thread hatte ich auch schon mal das Problem, finde den aber nicht mehr wieder.

BigWim

  • Gast
Re: Funktion gibt kein Dokument zurück
« Antwort #7 am: 10.05.10 - 11:24:18 »
Ich hatte auch mal eine (für mich sehr lehrreiche) Diskussion über Gültigkeit von Variablen angezettelt.

Markus

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Funktion gibt kein Dokument zurück
« Antwort #8 am: 10.05.10 - 12:09:49 »
Ich hatte letzte Woche das gleiche Problem mit einer view.
Über einen Beitrag hier wurde ich dann ins IBM Forum geleitet, weiss jetzt nicht mehr was dort genau fehlte.
Die Lösung war Static Function GetCatNoSynchView.

Boris

Offline bikerboy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.155
  • Geschlecht: Männlich
Re: Funktion gibt kein Dokument zurück
« Antwort #9 am: 10.05.10 - 12:29:50 »
So habe die Funktion wie vorgeschlagen geändert also

Code
Function getTargetDoc(dbTarget as NotesDatabase, doc As NotesDocument) As NotesDocument
, damit läuft auch alles wie gewünscht.

Habe die anderen Threads auch gelesem.

Danköööööööööö (ist ja bald WM)
Robert Kreutzer

Anwendungsentwicklung

"Jeder Idiot kann was kompliziertes bauen, es Bedarf eines Genie für etwas einfaches"

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz