Domino 9 und frühere Versionen > ND8: Entwicklung

Sichere Alternative für ComputeWithForm

<< < (3/4) > >>

basile:
Hallo Joachim,

nochwas zu Deinem Posting: StampAll/StampAllMulti geht auch, da werden die Felder in einem Document "auf einen Rutsch" gesetzt. Aber auch da habe ich die Logik nicht in dem Dokument, in dem die Felder geetzt werden, sondern in der aufrufenden Routine.
Hier noch ein nettes Beispiel für StampAll:
http://johnjardin.ukuvuma.co.za/2011/10/24/lotusscript-tip-use-stampallmulti-to-avoid-unnecessary-looping/

IBM hat leider keins geliefert.

Viele Grüße

Udo
 

Peter Klett:

--- Zitat von: jo@chim am 22.05.14 - 15:15:27 ---
--- Code: ---aber nicht mit ComputeWithForm, sondern per Script gerechnet ...
--- Ende Code ---
??? Was meinst Du denn damit Peter? Ist es nicht viel aufwändiger, per Script einzelne Felder zu aktualisieren als in einem Rutsch mit ComputeWithForm.?
(Ok StampAllMulti wär auch noch ne Alternative, wenn man tatsächlich nur einzelne Felder aktualisieren will und nicht alle Formeln in der Response neu berechnen...)

--- Ende Zitat ---
Ich meine damit, dass sich die Frage "Sichere Alternative für ComputeWithForm" wohl kaum mit "ComputeWithForm" beantworten lässt ...

Tode:
Da liegst Du aber falsch @Udo: ComputeWithForm berechnet JEDE Formel, egal wie komplex sie ist, und ComputeWithForm wirft sogar einen Fehler, wenn man die Parameter entsprechend setzt.

Jetzt kommt das grosse "ABER": Fällt ComputeWithForm bei EINER Formel auf die Nase, dann sind nur die Felder OBERHALB des Fehlers berechnet, die Felder UNTERHALB nicht.

UND: ComputeWithForm ist sehr viel sensibler als ein Compute im Frontend.

Beispiel:

Du hast ein Datumsfeld "Datum" und füllst das per Script mit doc.Datum = "22.05.2014".
Wenn Du das Dokument nun im Frontend öffnest, und neu abspeicherst, dann wird das Klaglos in ein gültiges Datum umgewandelt, Du bekommst keinerlei Meldung o.ä. über einen falschen Typ.

ComputeWithForm wird aber an diesem Feld abbrechen mit der Fehlermeldung "Datum erwartet" und alle Felder UNTERHALB nicht mehr berechnen.

AUSSERDEM hat ComputeWithForm keinen Zugriff auf "Berechnet zur Anzeige"- Felder, was u.U. auch zu Fehlern führt.

Das heisst: ein ComputeWithForm darf man nur dann einsetzen, wenn man sich zu 100% sicher ist, dass alle Formeln / Felder zu jedem Zeitpunkt die richtigen Werte / Feldtypen haben, sonst bricht es ab.

WENN man es einsetzt, muss man den Parameter setzen, dass es einen Fehler wirft, und so lange rumprobieren, bis das COmputeWithForm ohne Fehler durchläuft...
Das ist ne Heiden- Arbeit, in der Zeit hat man im Normalfall die Formeln zur Neuberechnung in Script nachprogrammiert...

Peter Klett:
Ergänzend muss noch erwähnt werden, dass ComputeWithForm keine Scripte ausführt. Und spätestens dann, wenn man vielleicht im Postrecalc oder Querysave Berechnungen einbaut, ist man damit am Ende.

Also besser gleich eine saubere Scriptlösung. Eine zentrale Bibliothek, in der die Routinen zur Aktualisierung der Dokumente enthalten sind, und überall zur Verfügung stehen.

Das entspricht sicher nicht Deiner - vollkommen verständlichen - Erwartung einer Objektorientierung, ist aber in der Praxis recht wartungsfreundlich.

basile:
Hallo Tode,

was ich meinte ist, dass ComputeWithForm zwar auch komplexe Formeln ausführt, aber das Ergebnis nicht im Dokument gespeichert wird. Das SpeichernEvent scheint vorher ausgeführt zu werden und dann kommt erst das Ergebnis an.

Viele Grüße

Udo

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln