Domino 9 und frühere Versionen > ND8: Entwicklung

Wert in dem Feld "Form" überschreiben

(1/3) > >>

sja:
Lieber @atnotes,

es soll in einer Funktion (LotusScript) unter anderem Wert in dem Feld "Form" geändert werden. Da das ganze Script kompliziert ist, habe ich einen  Test-Button erstellt mit folgendem Script. Beim Ende der Funktion soll das Dokument geschlossen werden ohne Nachfrage, ob das Dokument gespeichert soll. In allen Feldern werden zugeordnete Werte gespeichert ohne Problem, nur in dem Feld "Form" habe ich Probleme, wird immer alter Wert behalten, egal in de Backend oder Frontend ändere ich den Wert und speichere das Dokument.

Sub Click(Source As Button)
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUiDocument
   Set uidoc = ws.CurrentDocument
   Call uidoc.Refresh
   Set doc = uidoc.Document
   
   doc.StatusAngebot = "8"
   doc.abgeschlossen_1 = "ja"
   doc.abgeschlossen_am = "30.09.2013"
   doc.abgeschlossen_durch = "sja"
   'doc.Form = "Abshcluss"
   Call doc.Replaceitemvalue("Form", "Abschluss" )
   Call doc.Save(True, True)
   'Call uidoc.FieldSetText( "Form", "Abshcluss" )
   'Call uidoc.Save()
   doc.saveOption = "0"
   'Call uidoc.Save()
   Call uidoc.Close
End Sub

Bitte um Hilfe. Vielen Dank im Voraus

Sofia

Klafu:
Hallo Sofia,

warum machst du vor dem doc.ReplaceItemValue ein Call?
Versuch es mal so, wie es in der Hilfe steht.  :)


This script changes the value of the EstimatedCost item to 122.
Dim doc As NotesDocument
Dim item As NotesItem
'...set value of doc...
Set item = doc.ReplaceItemValue( "EstimatedCost", 122 )
Call doc.Save( True, True )

Chris

marschul:
Du hast hier zwar den Button, aber gibt es mglw. noch eine weitere Aktion, die das Dokument noch einmal aus dem Frontend heraus speichert und dabei den Wert in "Form" wieder überschreibt?

Peter Klett:
Das mit dem Call geht völlig in Ordnung, kann man so schreiben, wenn man keinen Rückgabewert haben will (habe ich in Zusamenhang mit ReplaceItemValue noch nie anders gemacht, und funktioniert immer).

Ich denke, dass das Hauptproblem darin besteht, dass das Dokument geöffnet ist. Ich würde das ganze umdrehen.

1. Dokument ändern
2. Dokument refreshen
3. Dokument speichern
4. Dokument schließen
5. Form ändern
6. Dokument speichern

Dann kommt da bzgl. Form nichts aus dem UI dazwischen.

Etwa so:

Sub Click(Source As Button)
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUiDocument
   Set uidoc = ws.CurrentDocument
   Set doc = uidoc.Document
  
   doc.StatusAngebot = "8"
   doc.abgeschlossen_1 = "ja"
   doc.abgeschlossen_am = "30.09.2013"
   doc.abgeschlossen_durch = "sja"
   Call uidoc.Refresh
   Call uidoc.Save()

   doc.SaveOptions = "0"
   Call uidoc.Close
   Call doc.RemoveItem ("SaveOptions")
   doc.Form = "Abschluss"
   Call doc.Save(True, True)
End Sub

Ich hoffe, das ist etwa das, was Du erwartest ...

dnotes:
Das eigentliche Hauptproblem ist, dass man das Feld SaveOptions hinten ohne "s" schreibt.
Dann braucht man auch kein replaceitem oder irgend etwas anderes... der Code funktioniert dann einwandfrei.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln