Domino 9 und frühere Versionen > ND8: Entwicklung
Item ändern mit Aktion
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