Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: MrXYZ am 29.09.03 - 22:46:28

Titel: In NotesDocument schreiben und aktualisieren
Beitrag von: MrXYZ am 29.09.03 - 22:46:28
Hi @ALL

Per Knopfdruck (Lotus Skript) setze ich in ein Feld eines Dokumentes, das ich vorher per UNID als NotesDocument definiere einen bestimmten Wert. Das klappt wunderbar, ebenfalls die Speicherung. Jedoch werden die restlichen Felder nicht aktualisiert. Wie bekomme ich einen Refresh auf das Dok hin ?

Set minutes = db.GetDocumentByUNID(docid)
Call minutes.ReplaceItemvalue("testfeld",1)
Call minutes.Save(True,True)

 ???
Titel: Re:In NotesDocument schreiben und aktualisieren
Beitrag von: TMC am 29.09.03 - 22:55:16
Call uidoc.Refresh

Gruss,
TMC

Titel: Re:In NotesDocument schreiben und aktualisieren
Beitrag von: MrXYZ am 29.09.03 - 22:58:10
ich befinde mich ja nicht im Uidoc, sondern setze von einem speziell erzeugten Dokument (das ist das uidoc) per Knopfdruck das Feld in einem anderen Dokument. Das andere Dokument möchte ich gerne aktualisieren.

Im speziellen Fall klappt das Setzen des Feldes, aber ich muss dann rein theoretisch nochmals ins Dokument klicken und F9 drücken um einen Refresh hinzubekommen.
Titel: Re:In NotesDocument schreiben und aktualisieren
Beitrag von: TMC am 29.09.03 - 23:04:58
ups, hab zu schnell gelesen....

Ich bin mir nicht sicher ob da gleich ein reopen nötig ist, aber damit geht es dann mit Sicherheit.

Ich glaube ata hatte da mal was auf seiner Homepage wegen "reopen".
http://www.anton-tauscher.de/LotusScript/startdyn.htm (http://www.anton-tauscher.de/LotusScript/startdyn.htm)

TMC
Titel: Re:In NotesDocument schreiben und aktualisieren
Beitrag von: TMC am 29.09.03 - 23:08:36
und noch was fällt mir ein.
Ich bin wirklich kein Profi in Script und selber grad beim erlernen, aber evtl.

 - das Backend Doc nach Deinen Aktionen zu UIDoc deklarieren
 - dann einen Refresh

TMC
Titel: Re:In NotesDocument schreiben und aktualisieren
Beitrag von: Semeaphoros am 30.09.03 - 00:05:41
Also, das andere Doc ist ein reines Backend-Dokument - Richtig?

Dann hat es aber auch keine Events. Und das Berechnen erfolgt ja alles in der Maske drin, also in UI-Events. Das hat mit dem (Windows-)EventDriven Modell zu tun (8tung, das ist nicht zu verwechseln mit Object-Modell, wie das häufig gemacht wird).

Da gibt es aber ein Hintertürchen:

Bedingung: Im Dokument muss ein Feld namens "Form" beinhalten, in dem dier Name der zu benutzenden Maske/Formular drin steht.

Gibt es das Feld, dann kann man die Methode "ComputeWithForm" aufrufen, um das Dokument mit den Events des Formulars berechnen zu lassen. Also etwa:

Doc.Form="DasZuVerwendendeFormular"
If Doc.ComputeWithForm(False,False) Then
   ' arbeite weiter
Else
   ' Fehlermeldung, die Berechnung hat nicht geklappt
End If



Titel: Re:In NotesDocument schreiben und aktualisieren
Beitrag von: Rob Green am 30.09.03 - 00:09:42
bezieht sich das auf das komplette Neuberechnen im Backend, wo normalerweise computewithform lediglich
"Validates a document by executing the default value, translation, and validation formulas, if any are defined in the document form" und damit keine berechneten Felder neu kalkuliert? Heißt, durch Nutzung eines Feldes namens Form kann man dennoch per computewithform einen kompletten Refresh auslösen im Backend?
Auf default values, translation formulas, validation formulas und computed formulas? Wäre absolut cool!
Titel: Re:In NotesDocument schreiben und aktualisieren
Beitrag von: Semeaphoros am 30.09.03 - 00:15:00
Du fragst mich jetzt etwas, bisher hat mir das Ding eigentlich immer das gemacht, was ich erwartet habe, aber vielleicht hab ich mich schon dran gewöhnt, dass ich fast nur Validierungen und so drin habe, könnte sein, meistens mach ich Berechnungen eh über Script und hinterlege hinter das Formular ein entsprechendes Custom-Objekt. So hab ichs sowieso viel einfacher, meine Berechnungen auch ausserhalb des UI auszulösen, die gesamte Logig ist in der Custom-Klasse hinterlegt, und wenn die sauber aufgebaut ist, lässt sich das eben auch ausserhalb des Forms verwenden. Hat sich schon häufig bewährt und ich habe gerade eben meine Vortragsvorschläge für die Lotusphere 04 abgeschickt, die sich vorwiegend genau mit diesem Thema beschäftigt. Hoffe sehr, dass mindestens einer meiner Vorschläge auch einschlägt :-)
Titel: Re:In NotesDocument schreiben und aktualisieren
Beitrag von: Rob Green am 30.09.03 - 00:33:04
ok, verstehe, wie Du das meinst (reine Script Nutzung). Diese Frage wird spätestens strategisch wichtig beim Neuentdecken der mächtigen R6 Formelsprache. Da wird man schnell verleitet, Formeln zu nutzen, nur um evtl. zu spät erkennen zu müssen, daß man im Backend Neuberechnungen anstellen muß, leider die Form aus zu vielen Bestandteilen besteht, um es über einen kleinen Miniagent quasi halb händisch zu erledigen. Konsequenz (mehr interne Ohrenmarke für mich): vorher genau überlegen, ob man ein computewithform benötigen wird und wenn es um eine komplette Neukalkulation geht, um wie viele Felder. Wenn sehr viele, dann Nutzung von Formeln ausschließen, insofern es User GUI zuläßt. Sonst gleich parallel ein kurzes Scriptmodul aufbauen, das die Neuberechnungen dynamisch über geschickte Feldnamensbezeichnungen ausführt.
Titel: Re:In NotesDocument schreiben und aktualisieren
Beitrag von: Semeaphoros am 30.09.03 - 06:38:39
Ja, zum Beispiel, und Evaluate nutzen, um @Formeln via Script zu nutzen, seit etwa 5.0.6 hat Evaluate richtig an Nutzen gewonnen (Rückgabe von Werten und die Möglichkeit, ein Dokument mit auf den Weg zu geben)