Autor Thema: Postsave - IsNewDoc  (Gelesen 2540 mal)

Offline LionKing

  • Junior Mitglied
  • **
  • Beiträge: 94
Postsave - IsNewDoc
« am: 12.07.17 - 13:11:59 »
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
Wie setzte ich also um, dass nur beim ersten speichern des Hauptdokuments das Script greift?

Danke.
Domino 9.0.1

Offline LuckyMan

  • Junior Mitglied
  • **
  • Beiträge: 52
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Postsave - IsNewDoc
« Antwort #1 am: 12.07.17 - 13:20:53 »
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.
Gruß

LuckyMan
-------------------------------------------------------

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Postsave - IsNewDoc
« Antwort #2 am: 12.07.17 - 22:42:54 »
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	

HTH,
Bernhard

Offline LuckyMan

  • Junior Mitglied
  • **
  • Beiträge: 52
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Postsave - IsNewDoc
« Antwort #3 am: 13.07.17 - 06:26:58 »
@koehlerbv: Hast ja Recht... ;)
Gruß

LuckyMan
-------------------------------------------------------

Offline it898ur

  • Senior Mitglied
  • ****
  • Beiträge: 477
Re: Postsave - IsNewDoc
« Antwort #4 am: 13.07.17 - 07:04:13 »
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é

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.277
  • Geschlecht: Männlich
Re: Postsave - IsNewDoc
« Antwort #5 am: 13.07.17 - 08:20:20 »
Es geht auch ohne Hilfsfeld oder Variable, indem man "lastModified" auswertet, diese Eigenschaft verrät einem ob ein Dokument gespeichert wurde oder nicht:
Code
if Cstr(docA.lastModified) = "0:00:00" then 
  '-- DocA wurde noch nie gespeichert
else
  '-- DocA wurde gespeichert
end if
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.277
  • Geschlecht: Männlich
Re: Postsave - IsNewDoc
« Antwort #6 am: 13.07.17 - 08:38:56 »
muss mich korrigieren, im Postsave geht das nicht, bzw. ist es da schon zu spät ...
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline LionKing

  • Junior Mitglied
  • **
  • Beiträge: 94
Re: Postsave - IsNewDoc
« Antwort #7 am: 13.07.17 - 08:46:15 »
Danke für die zahlreichen Antworten.
Ich habe es jetzt mit der von  koehlerbv vorgeschlagenen Lösung umgesetzt.
Funktioniert einwandfrei.
Domino 9.0.1

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz