Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: geissbock am 10.10.07 - 13:06:29

Titel: Warum wird Code im Postdocumentdelete nicht ausgeführt
Beitrag von: geissbock am 10.10.07 - 13:06:29
Hallo, brauch mal wieder Hilfe.
Szenario: Dokumente enthalten eine eingebettete Ansicht mit zugeordneten Unterdokumenten, die Bewertungen des Hauptdokumentes enthalten. Der kritischste Bewertungsstatus wird im Hauptdokument in Abhängigkeit der Unterdokumente berechnet dargestellt. Sprich wird ein Unterdokument gelöscht muss eine Neuberechnung des Gesamtbewertungsstatus stattfinden. Habe dazu entsprechenden Code in das Postdocumentdelete-Event der DB eingebaut. Aber der Code wird überhaupt nicht ausgeführt. Weder im Debugger noch werden eingebaute Testmessageboxen ausgegeben.
Woran kann das liegen bzw. wann genau greift denn dieses Event??
Danke Klaus
Titel: Re: Warum wird Code im Postdocumentdelete nicht ausgeführt
Beitrag von: DerAndre am 10.10.07 - 13:17:37
Hilft das u.U.:

http://atnotes.de/index.php?topic=25827.msg165052#msg165052

Der letzte Absatz von Axel könnte wichtig sein.
Titel: Re: Warum wird Code im Postdocumentdelete nicht ausgeführt
Beitrag von: umi am 10.10.07 - 14:09:11
Hast Du die DB schon mal neu geöffnet?
Titel: Re: Warum wird Code im Postdocumentdelete nicht ausgeführt
Beitrag von: flaite am 10.10.07 - 14:15:36
Am besten du startest direkt notes neu. Imho wird das solange gecached, bis die Kachel der entsprechenden Datenbank nicht mehr aktiviert ist. Aber da übersieht man leicht Sachen.
Titel: Re: Warum wird Code im Postdocumentdelete nicht ausgeführt
Beitrag von: pete_bla am 10.10.07 - 14:42:11
Hi,

wenn du mit dem gleichen NotesClient Entwickelst und Testest musst du die DB im NotesClient und zumindest auch den Desingern schliessen, um Änderungen an den DBEvents zu erhalten.

Gruss, Pete(r)
Titel: Re: Warum wird Code im Postdocumentdelete nicht ausgeführt
Beitrag von: geissbock am 10.10.07 - 15:16:39
Hallo,
vielen Dank für die vielen Hinweise. Das hat mir schon mal geholfen und ich habe über den Debugger nun Informationen erhalten. So, nun aber die nächste Frage. Ich will ja hier ein Bewertungsdokument löschen und aufgrund der verbliebenen dann den neuen Gesamtbewertungsstatus ermitteln. Ich durchlaufe also die verbliebenen Dokumente und vergleiche deren Werte. Hier nun das Problem: In der Kollektion die ich da durchlaufe, ist das gelöschte Bewertungsdokument noch drin und damit stimmt die Berechnung dann wieder nicht. Wie kann das denn sein, wenn ich doch im Postdocumentdelete bin?
Die Kollektion bekomme ich mit
Set coll = patentview.GetAllDocumentsByKey(key(0), True). Kann es sein, dass die Ansicht dann nicht so schnell aktualisiert wird und die Kollektion damit noch das gelöschte Dokument enthält?

Danke & Gruß Klaus
Titel: Re: Warum wird Code im Postdocumentdelete nicht ausgeführt
Beitrag von: geissbock am 11.10.07 - 15:00:48
Also hab da nochmal ein bisschen geforscht, es ist tatsächlich so, dass die Dokumente in diesem Event noch nicht komplett weg sind. Die Dokumente lassen sich ja auch noch ansprechen und Werte auslesen. Ganz schön dumme Sache. Jemand eine Idee für einen Würgaround?
Dabke
Klaus
Titel: Re: Warum wird Code im Postdocumentdelete nicht ausgeführt
Beitrag von: pete_bla am 11.10.07 - 15:32:26
Hi,

schonmal versucht die Dokumente zu markieren, dass sie z.B. nicht mehr gültig sind,
anstatt sie gleich zu löschen?
(eventuell auch generell, bevor du sie löscht)
Du kannst sie dann bei Deinem "Sammeln" auf dieses Flag prüfen und eben nicht mitnehmen.

Ausserdem kannst Du so ja auch aus den Ansichten Filtern, hast aber sie noch im "Archiv"
und im nachhinein könntest du sie wiederherstellen,
bzw. wenn die Löschung aus irgeneinem Grund nicht funktionierte einfacher als "Leichen" identifizieren und per Agenten automatisch löschen
(z.B. auch ganz praktisch wenn die Anwender eingeschränkte Rechte haben und evenutell selbst garnicht löschen dürfen)

Gruss, Pete(r)
Titel: Re: Warum wird Code im Postdocumentdelete nicht ausgeführt
Beitrag von: koehlerbv am 11.10.07 - 15:57:28
Merk Dir doch in einer globalen Variablen des DatabaseScripts im QueryDocumentDelete dessen UNID - darauf kannst Du dann im PostDocumentDelete zurückgreifen.

Ich habe es nicht probiert: Was sagt eigentlich im PostedDocumentDelete beim "gelöschten" Dokument zur Property IsValid der NotesDocument class?

Bernhard
Titel: Re: Warum wird Code im Postdocumentdelete nicht ausgeführt
Beitrag von: geissbock am 15.10.07 - 09:11:58
Hallo,
danke für die Hinweise. Hat geholfen. Merke mir die docid und schliesse die bei der Schleife aus. Bernhard, das Isvalid liefert leider auch ein True und das Isdeleted ein False. Schon merkwürdig, aber gut. Würgaround arbeitet nun wie gewünscht. Gelobt sei mal wieder das Forum und ihre hilfreichen Mitstreiter.
Schöne Woche noch.
Gruß Klaus