Domino 9 und frühere Versionen > ND9: Entwicklung
Postsave - IsNewDoc
LionKing:
Hallo,
ich möchte, nachdem ein Dokument gespeichert wurde, automatisch Response Dokumente anlegen lassen.
Das mache ich über ein Postsave-Event. Leider werden dadurch bei jedem speichern die Response-Dokumente erzeugt.
Eine Abfrage über IsNewDoc funktioniert in diesem Fall leider nicht, da das Dokument da schon gespeichert wurde und somit nicht mehr neu ist.
--- Code: ---Sub Postsave(Source As Notesuidocument)
Dim session As New NotesSession
Dim work As New NotesUIWorkspace
Dim db As NotesDatabase
Dim docA As NotesDocument
Dim docB As NotesDocument
Dim uidoc As NotesUIDocument
' For this example we will assume that DocA is the current document
Set db = session.currentdatabase
Set uidoc = work.currentdocument
Set docA = uidoc.document
' These four lines could be used in a loop, or simply repeated, in order to create more than one response document
If uidoc.IsNewDoc Then
Set DocB=db.createdocument
Call docB.MakeResponse ( docA )
docB.Form="Response1"
Call docB.Save( True, True )
End If
End Sub
--- Ende Code ---
Wie setzte ich also um, dass nur beim ersten speichern des Hauptdokuments das Script greift?
Danke.
LuckyMan:
Setz doch einfach ein Feld mit einem beliebigen Namen auf 1 und frage vor dem Speichern ab, ob es vorhanden ist und den entsprechenden Wert hat.
koehlerbv:
Ich bitte, diesen Post nicht als "Klugscheiss" zu verstehen, aber das mit dem "Feld" ist schlicht falsch - ein Feld ist ein Frontend-Designelement und müsste dort auch angelegt und für diesen Fall in der Maske vorbelegt werden, und genau damit würde der beabsichtigte Zweck eben nicht erfüllt werden.
Ws braucht vielmehr ein Item, das entscheidende Backend-Element also. Der Code müsste (nur in dem Abschnitt, ungeprüft und mit der eigentlich immer notwendigen Paranoia auch noch zwingend auszubauen!) so aussehen:
--- Code: ---' These four lines could be used in a loop, or simply repeated, in order to create more than one response document
If docA.ResponsesCreated (0) <> "1" Then
Set DocB=db.createdocument
Call docB.MakeResponse ( docA )
docB.Form="Response1"
Call docB.Save (True, False, True)
docA.ResponsesCreated = "1"
Call docA.Save ( True, False, True)
End If
--- Ende Code ---
HTH,
Bernhard
LuckyMan:
@koehlerbv: Hast ja Recht... ;)
it898ur:
Hallo,
wenn man auf Feld und Item verzichten will, hilft auch eine globale Variable in der Maske (z. B. my_IsNewNote), die man im PostOpen mit IsNewDoc belegt (hier stimmt der Wert ja noch) und dann im PostSave ausliest (aber bitte danach die Variable zurücksetzen, falls der Anwender zwischenspeichert).
Viele Grüße
André
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln