Domino 9 und frühere Versionen > ND8: Entwicklung

Item ändern mit Aktion

<< < (4/7) > >>

smokyly:

--- Zitat von: Peter Klett am 10.01.12 - 13:38:00 ---Die Variable ist bestimmt in den Declarations deklariert

--- Ende Zitat ---
Da hatte ich zuerst gesucht.


--- Zitat --- und wird im PostOpen gesetzt.
--- Ende Zitat ---
Super, gefunden, hier deklariert und gesetzt.


--- Zitat ---Das ist ein gängiges und gutes Verfahren:
Globale Variable im PostOpen mit dem aktuellen Feldwert setzen
Im PostSave (oder QuerySave) den nun aktuellen Feldwert mit der Variablen (also dem Wert zum Zeitpunkt des Öffnens) vergleichen und daraus Aktionen ableiten

--- Ende Zitat ---
OK, und nun hab ich auch schon die Idee, wie ich das dann im Backendscript umsetze.

Beste Grüsse!

Peter Klett:

--- Zitat von: smokyly am 10.01.12 - 13:41:22 ---
--- Zitat --- und wird im PostOpen gesetzt.
--- Ende Zitat ---
Super, gefunden, hier deklariert und gesetzt.

--- Ende Zitat ---
Wenn die Variable im PostOpen deklariert ist, kann sie nicht im PostSave zur Verfügung stehen. Sie muss in den Declarations der Maske oder den Declarations von Globals deklariert sein. Falls die gleiche Variable nochmal im PostOpen deklariert ist, gelangen die Daten nicht in die global deklarierte Variable, und der Inhalt ist wiederum nicht im PostSave verfügbar.

Sorry für meine Pingeligkeit, aber das ist für die Funktionsweise sehr wichtig.

smokyly:
Hallo Peter, das ist eine Teilmaske, da steht in den Deklarationen nichst drin. Im Postopen finde ich das:


--- Zitat ---Kostenstelle         = source.Document.Kostenstelle(0)
--- Ende Zitat ---

Also ist das keine implizite Deklaration mit Wertsetzen, sondern nur eine Zuweisung?
Hat natürlich für mein Anliegen nicht wirklich was zu tun, ist Interesse.

smokyly:
Also so sieht der Code für den Agenten im Initalize aus:


--- Zitat ---Sub Initialize
  

   Dim session            As New NotesSession
   Dim db               As NotesDatabase
   Dim dc               As NotesDocumentCollection
   Dim doc               As NotesDocument
   Dim Kostenstelle_neu           As String
   Dim Kostenstelle_alt         As String

   Set db               = session.CurrentDatabase
   Set dc               = db.UnprocessedDocuments
   Set doc              = dc.GetFirstDocument

   Kostenstelle_neu     = (InputBox$("Bitte neue Kostenstelle angeben!"))

  
   While Not doc Is Nothing
      
      Kostenstelle_alt=doc.Kostenstelle
      doc.Kostenstelle = Kostenstelle_neu

      Call doc.Save(True,False,True)
      Call sendmail(doc,Kostenstelle_alt)      
      Set doc = dc.GetNextDocument(doc)
   Wend
  
End Sub

--- Ende Zitat ---

Dann habe ich noch eine Sub "sendmail" gebastelt, die das Mail erstellt und noch die anderen benötigten Funktionen / Subs aus der Teilmaske in den Agenten geschoben. In den Options hab ich mit Use eine benötigte Bibliothek angegeben.
Konnte den Agenten ohne Fehler speichern.
A-Bär: Das verstehe ich noch nicht ganz - das sendmail hat ja zwei Übergabeparameter:

--- Zitat ---Sub Sendmail(Source As NotesDocument, P_Kostenstelle_agent As String)

--- Ende Zitat ---
Muss ich Source und P_Kostenstelle_agent denn nun nochmal in den Declarations aufnehmen, oder sind diese denn nun implizit definiert? Ich behaupte mal Letzteres, da es in anderen Sprachen auch so ist.

koehlerbv:
Das ist schon korrekt so, Geri. Subs / Functions deklarieren ihre Parameter implizit.

Bernhard

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln