Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: TMC am 31.01.04 - 20:10:33

Titel: Dokument Refresh weil sich im Backend Felder geändert haben
Beitrag von: TMC am 31.01.04 - 20:10:33
Hi,

ein User öffnet ein neues oder bestehendes Dok im Bearbeitungsmodus.

Dort gibt es einen Button: dadurch wird u.a. uiws.pickliststrings ausgeführt. Das Ergebnis wird über
doc.FeldA = szLinkerWert
doc.TEST1 = szRechterWert
in berechnete Felder geschrieben.

Ein anschließendes
Call doc.Save(False,True)
Call uidoc.Reload
zeigt dann auch die Werte wie gewünscht in den Feldern an.

Problem:
Ist dies ein neues Dok, wird es ja durch doc.save gespeichert. Es soll aber erst wirklich gespeichert werden, wenn der User den Button "Speichern" bestätigt.

Mein Versuch:
 - uidoc vorher schließen
 - dann Felder füllen, speichern.
 - uidoc wieder öffnen
 - Backend-Dokument (doc) löschen
Aber Fehlermeldung: "cannot remove NotesDocument when instantiated by NotesUIDocument"

2. Versuch:
Backend speichern und schließen, und uidoc neu öffnen
   Call doc.save(False, False)
   Call uidoc.close   
   Set uidocReopen = uiws.editDocument(False, doc)   
   Call doc.remove(True) 'Das Backend löschen
   uidocReopen.EditMode = True
Und wieder Fehlermeldung: "cannot remove NotesDocument when instantiated by NotesUIDocument". Auch wenn ich uidoc.close schon vorher platziere....

Hat wer ne Idee was man da noch machen könnte?

Matthias
Titel: Re:Dokument Refresh weil sich im Backend Felder geändert haben
Beitrag von: koehlerbv am 31.01.04 - 21:59:27
Das ist mir jetzt aber etwas wirr ...
Call uidoc.Refresh tut auch das gewünschte.
Eines der berechneten Felder als Schlüsselwortfeld definieren (tut ja nicht weh ;-) und dann in den Field Properties einstellen "Felder nach Schlüsselwortänderung neu berechnen" tut auch Wunder.

Die Fehlermeldungen, die Du bisher erhalten hast, sind ansonsten sehr brav. Notes tut, was es tun muss ...

Matthias, sag' bitte an, wenn ich was falsch verstanden haben sollte.

Herzliche Grüsse - wie immer - von "Ober.." nach "Nieder.."

Bernhard
Titel: Re:Dokument Refresh weil sich im Backend Felder geändert haben
Beitrag von: koehlerbv am 31.01.04 - 22:08:08
Noch genauer: Wenn Frontend, dann Frontend: Statt doc.Feld = konsequent im FrontEnd arbeiten: FrontendDocument.FieldSetText ...

Bernhard
Titel: Re:Dokument Refresh weil sich im Backend Felder geändert haben
Beitrag von: TMC am 31.01.04 - 22:11:11
Hi Bernhard,

Du hast mich indirekt auf die Lösung gebracht :-)

Das Call doc.Save(False,True) hätte ich weglassen sollen, ohne dem gehts wunderbar :-)

Als Refresh mach ich nun folgendes:
   Call uidoc.Reload 'Damit die Backend-Doc-Änderung angezeigt wird
   Call uidoc.Refresh 'Damit auch berechnete Felder neu berechnet werden

Ich hätte ja schon fast mein Auto verwettet, dass ein doc.save hier sein muss, damit man die Änderungen vom Backend sieht, aber dem ist nicht so.

Also vielen Dank !

Matthias
Titel: Re:Dokument Refresh weil sich im Backend Felder geändert haben
Beitrag von: TMC am 31.01.04 - 22:13:00
Noch genauer: Wenn Frontend, dann Frontend: Statt doc.Feld = konsequent im FrontEnd arbeiten: FrontendDocument.FieldSetText ...

Hmm, geht aber afaik nicht bei berechneten Feldern, oder täusche ich mich da jetzt? Daher bin ich gleich ins Backend ausgewichen...

Matthias
Titel: Re:Dokument Refresh weil sich im Backend Felder geändert haben
Beitrag von: koehlerbv am 31.01.04 - 22:18:51
Zitat
Du hast mich indirekt auf die Lösung gebracht :-)
Ist das nicht wieder das berühmte "Zwei-Hirne-Prinzip" ? Man muss das Problem nur jemanden Schildern (und derjenige dann irgendwas halbwegs passendes zum Thema brabbeln), und auf einmal kommt man selber auf die Lösung ;-)

Also: Gut, dass wir darüber gesprochen haben ;-))

Backend / Frontend, Refresh etc. - und dabei RTFs berücksichtigen: Das wäre wieder ein sauberes, überschaubares Kapitel für "Best Practices" ! Denke ich mal ...

Herzlichst,
Bernhard (der Yeti, oder wie die Menschen im Schnee sonst so heissen ;-)
Titel: Re:Dokument Refresh weil sich im Backend Felder geändert haben
Beitrag von: TMC am 31.01.04 - 22:25:18
Ist das nicht wieder das berühmte "Zwei-Hirne-Prinzip" ? Man muss das Problem nur jemanden Schildern (und derjenige dann irgendwas halbwegs passendes zum Thema brabbeln), und auf einmal kommt man selber auf die Lösung ;-)

Genau :-)
Mein Auto darf ich jetzt ja zum Glück behalten, weil ich es nicht verwettet habe.

Backend / Frontend, Refresh etc. - und dabei RTFs berücksichtigen: Das wäre wieder ein sauberes, überschaubares Kapitel für "Best Practices" ! Denke ich mal ...
Wäre sinnvoll. Ich war mir hier ja sicher, dass ich das Backend speichern muss, und dem ist in diesem Fall nicht so.

Matthias