Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Floink am 15.04.11 - 21:23:21

Titel: @UpdateFormulaContext und "Onload" event
Beitrag von: Floink am 15.04.11 - 21:23:21
Hallo,

hab nur ne kurze Frage um zu klären ob ich zu doof bin, oder das so is wies sein soll ;-)

Und zwar. Ich erstelle ein neues Dokument mit folgendem Code:

Code
@Command([FileSave]);
@Command([Compose];@DbName;"WordSchreiben");

@UpdateFormulaContext;
@SetField("IstPackliste";1)

Funktioniert ja auch wunderbar. Ich habe nur ein Problem. Im "Onload" event des neuen Dokumentes benötige ich den Inhalt des feldes "IstPackliste" leider hat der im Moment des "Onload" noch nicht den Wert aus dem @UpdateFormulaContext. (Im geöffneten Dokument ist der Wert aber da)

Wird der Wert erst nach dem Onload gesetzt oder mach ich was falsch?

LG Matthias
Titel: Re: @UpdateFormulaContext und "Onload" event
Beitrag von: marschul am 15.04.11 - 23:28:06
Pack doch an beide Stellen (Onload & Deine Funktion nach @UpdateFormulaContext) etwas, was wir etwas ausgibt, z.B. in die Statuszeile, dann siehst Du die Reihenfolgen - vorausgesetzt, die Inhalte dessen, was Du ausgibst, unterscheiden sich  ;)
Ich kann mir gut vorstellen, dass Du mit Deiner Vermutung schon auf einer ganz heißen Spur bist...

Schönes WE!
Titel: Re: @UpdateFormulaContext und "Onload" event
Beitrag von: Peter Klett am 15.04.11 - 23:31:13
Ein Compose (egal, ob Formel oder Script) erstellt ein neues Dokument mit der angegebenen Maske und öffnet es. Nach dem Befehl ist das neue Dokument geöffnet. Folglich sind Events wie PostOpen, OnLoad usw. bereits gelaufen.

Wenn das Feld (hier IstPackliste) zum Zeitpunkt des Öffnens bereits gefüllt sein soll, gibt es zwei unterschiedliche Herangehensweisen.

1. Das Dokument vor dem Öffnen erstellen

Du erstellst per Script ein neues Dokument und öffnest es danach

Set doc = New NotesDocument (db)
doc.Form = "WordSchreiben"
doc.IstPackliste = "1"
Call workspace.EditDocument (True, doc)

Funktioniert, weil beim Öffnen das Feld "IstPackliste" bereits gefüllt. Unterschied zum Compose ist, dass das Dokument nicht neu ist. Abfragen, wie @IsNewDoc, geben ein anderes Ergebnis als bei einem Compose

2. Das Feld wird beim Öffnen berechnet

In der Maske ist das Feld "IstPackliste" berechnet beim Anlegen. Der Wert ergibt sich aus einer temporär hinterlegten Variablen (INI, Profildokument o.Ä.). Beim Erstellen des Dokuments wird erst die temporäre Variable gefüllt, dann erfolgt das Compose

Beispiel mit einer temp. INI-Variablen

Erstellen:

@Environment ("tmp_IstPackliste"; "1")
@Command([Compose];@DbName;"WordSchreiben");
@Environment ("tmp_IstPackliste"; "")

Wert des Feldes "IstPackliste"

@Environment ("tmp_IstPackliste")

Die Beispiele sind nur logisch gemeint, syntaktische Fehler möchte ich nicht ausschließen.


Möglicherweise erstellst Du das neue Dokument aus einem bereits geöffneten (vermute ich gerade anhand des [FileSave]), dann könntest Du auch das neue Dokument so einstellen, dass die Werte des markierten Dokuments übernommen werden und berechnest "IstPackliste" im Vorgabewert in Abhängigkeit eines Feldes des geöffneten Dokuments.
Titel: Re: @UpdateFormulaContext und "Onload" event
Beitrag von: eknori (retired) am 16.04.11 - 05:29:32
Zitat
@SetField("IstPackliste";1)
Warum trägst du die "1"nicht als DefaultValue für das Item in die Maske ein?
Titel: Re: @UpdateFormulaContext und "Onload" event
Beitrag von: Peter Klett am 16.04.11 - 09:58:10
Zitat
@SetField("IstPackliste";1)
Warum trägst du die "1"nicht als DefaultValue für das Item in die Maske ein?
Soll ich mal "glaskugeln"?

Die Maske wird genutzt, um Worddokumente zu erstellen. Das erfolgt im Onload des Dokuments und die Art des Worddokuments ist abhängig von Feldern im Dokument, im angegebenen Beispiel handelt es sich um eine Packliste. Vermutlich gibt es auch noch einen Lieferschein usw..

Falls das Dokument zum Erstellen der Worddokumente am Anschluss nicht mehr gebraucht wird, würde ich das ganz anders lösen (z.B. als Funktion in einer Scriptbibliothek mit Übergabe der Art als Parameter), aber soweit sieht meine Glaskugel heute nicht.
Titel: Re: @UpdateFormulaContext und "Onload" event
Beitrag von: Floink am 16.04.11 - 10:12:30
Peters glaskugel hat recht :-)

im Onload wird ein Word Dokument erstellt.

Ich habs jetz ganz einfach mit @Environment  gelöst, ging am schnellsten und funktioniert :-)



danke für eure Hilfe