Domino 9 und frühere Versionen > ND9: Entwicklung
mehrere Dokumente per Aktion in Ansicht ändern
Peter Klett:
StampAll hat den Nachteil, dass die Dokumente bei jedem Aufruf gespeichert werden. Dagegen bin ich allergisch, deswegen loope ich lieber. Ich würde auch noch bei jedem Feld prüfen, ob das Dokument überhaupt gespeichert werden muss. Muss nichts geändert werden, muss auch nciht gespeichert werden.
ronka:
Ich stimme dir zu das einen gute programmierer so etwas macht, aber eins der nur schnell felder hinzufügen möchte, was hier, glaube ich wenigstens, gewollt war, würde sich über den Zeit gewinn welches hier statt findet mit den StampAll sicherlich mehr freuen.
eknori (retired):
--- Zitat ---StampAll hat den Nachteil, dass die Dokumente bei jedem Aufruf gespeichert werden.
--- Ende Zitat ---
Bist Du dir sicher?
Ich habe es mal traced.
Öffnen der Datenbank und Speichern eines Documnets sieht so aus
--- Code: ---07:29:59.775 ns^[nserver:2BFC:1094] [EM005:after] ec11.nsf NT000004C2,sq=329 803
[8008: VIEW DEFAULT] [fEM_NSFNOTEOPEN:420]
07:30:21.106 ns^[nserver:2BFC:263C] [EM066:after] ec11.nsf:NT00000F42,sq=13 6A14DDC4072F15CCC125847B002DC112
[0001: DOCUMENT] [0080:] [fEM_NSFNOTEUPDATEEXTENDED:385]
--- Ende Code ---
Im While Loop sieht das bei 3 markierten Dolumenten so aus
--- Code: ---07:30:42.323 ns^[nserver:2BFC:5D0] [EM066:after] ec11.nsf:NT00000E12,sq=11 B4ADA72E23EFDC125840C002BD985
[0001: DOCUMENT] [0085: FORCE NOCOMMIT] [fEM_NSFNOTEUPDATEEXTENDED:385]
07:30:42.336 ns^[nserver:2BFC:1A40] [EM066:after] ec11.nsf:NT00000EC2,sq=21 3F9F2640C53800B2C12578090031B03F
[0001: DOCUMENT] [0085: FORCE NOCOMMIT] [fEM_NSFNOTEUPDATEEXTENDED:385]
07:30:42.339 ns^[nserver:2BFC:5D0] [EM066:after] ec11.nsf:NT00000F42,sq=14 6A14DDC4072F15CCC125847B002DC112
[0001: DOCUMENT] [0085: FORCE NOCOMMIT] [fEM_NSFNOTEUPDATEEXTENDED:385]
--- Ende Code ---
Und beim stampAll ?
Da werden keine events getriggert.
Also würde ich mal behaupten, daß die o.a. Anmerkung, daß jedes Mal gespeichert wird nicht richtig ist.
Ich interpretiere das auch anhand der Beschreibung in der Designer Hilfe so.
--- Zitat ---The item values are immediately written to the back-end documents.
--- Ende Zitat ---
Man muss auch nicht prüfen, ob der gleiche Wert schon vorhanden ist.
--- Zitat ---This method does not modify existing NotesDocument objects.
--- Ende Zitat ---
jBubbleBoy:
--- Zitat ---This method does not modify existing NotesDocument objects. Documents must be retrieved again to see the changes.
--- Ende Zitat ---
Es fehlte noch ein Satz und die Hilfe erklärt, dass nach einem nutzen von Stampall die Backend-Variablen neu initiiert werden müssen, da diese Änderungen sonst nicht mitbekommen.
Die Methode Stampall ändert immer die Dokumente und erhöht die Seq.-Num der Items.
Peter Klett:
--- Zitat von: eknori am 16.02.20 - 07:45:07 ---Bist Du dir sicher?
--- Ende Zitat ---
Ja, zumindest aus meiner Sichtweise ;)
Dieses Script
--- Code: ---Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim col As NotesDocumentCollection
Set col = db.AllDocuments
Call col.StampAll ("Feld1", "x")
Call col.StampAll ("Feld2", "y")
Call col.StampAll ("Feld3", "z")
End Sub
--- Ende Code ---
hinterlässt in den Dokumenten drei Speicherzeitpunkte (in $Revisions). Das würde ich als dreimal gespeichert bei drei StampAll-Aufrufen interpretieren.
Ob physisch dabei wirklich ein Schreibvorgang stattgefunden hat, darüber habe ich noch nie nachgedacht, mich interessieren die Spuren, die man in den Dokumenten hinterlässt. Das ist das, was sich ein Revisor vielleicht einmal anschaut, wann das Dokument geändert wurde.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln