Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet 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
-
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
-
Noch genauer: Wenn Frontend, dann Frontend: Statt doc.Feld = konsequent im FrontEnd arbeiten: FrontendDocument.FieldSetText ...
Bernhard
-
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
-
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
-
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 ;-)
-
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