Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: schroederk am 14.11.18 - 09:57:39

Titel: Warum wird die Änderung nicht gespeichert?
Beitrag von: schroederk am 14.11.18 - 09:57:39
Hallo,

ich stehe mal wieder auf dem Schlauch:

Ich hab ein Script, dass den Body-Eintrag eines Kalendereintrags ersetzt.

Code
			If source.Document.HasItem("Body") Then
				Call source.Document.RemoveItem("Body")
			End If
			Call source.Document.AppendItemValue("Body", mytext )
			Call source.Document.Save(True, False, False)					


Das funktioniert soweit auch problemlos. aber jetzt möchte ich noch ein weiteres Feld ändern. Und da scheitert es bei mir.

Code
			If source.Document.HasItem("Body") Then
				Call source.Document.RemoveItem("Body")
			End If
			Print "ORT = " & source.Document.GetItemValue("Location")(0)
			Set LocItem = source.Document.ReplaceItemValue("Location", "blabla")
			Print "ORT = " & source.Document.GetItemValue("Location")(0)
			source.Document.Location =  "test"
			Print "ORT = " & source.Document.GetItemValue("Location")(0)
			Call source.Document.AppendItemValue("Body", mytext )
			Call source.Document.Save(True, False, False)					

In der Konsole wird mir bei jedem Print der erwartete Inhalt angezeigt, aber nach dem Speichern hat das Dokument noch den ursprünglichen Wert.
Der Body wurde aber ersetzt. Kann das jemand erklären?

Titel: Re: Warum wird die Änderung nicht gespeichert?
Beitrag von: jBubbleBoy am 14.11.18 - 11:14:34
Ist das die Kalendermaske der Mail-DB und das Dokument ist im Notesclient geöffnet? Im Lese- oder Bearbeitenmodus?
Titel: Re: Warum wird die Änderung nicht gespeichert?
Beitrag von: schroederk am 14.11.18 - 11:24:19
Das Ganze soll im Querysave der Kalendermaske passieren. Also beim Speichern eines Kalendereintrags.
Titel: Re: Warum wird die Änderung nicht gespeichert?
Beitrag von: jBubbleBoy am 14.11.18 - 12:05:07
Die Kalendermaske ist natürlich etwas besonderes. Hier gibt es die Klassenvariable "Dim csEventObj As CSCalendarEntry" bei Declarations, welche Kalenderfunktionen bereithält und natürlich nicht dokumentiert ist ;)
Beim Feld Location, im Ereignis "Onchange" steht bei mir folgender Code:
Code
 Call csEventObj.onChange(FIELD_LOCATION, "" )
Diesen Code würde ich nach einer LS Backend-Änderung des Feldes Location mal mit ausführen.
Titel: Re: Warum wird die Änderung nicht gespeichert?
Beitrag von: schroederk am 14.11.18 - 13:43:58
Das steht bei mir auch. Hast Du eine Idee, was das bewirken soll? Es ist mir nicht bekannt, dass die Angabe eines Ortes ein Event auslöst.
Ich habe den Call vor dem doc.save eingefügt. Es hatte aber leider keine Auswirkung auf das Ergebnis.  :-:
Titel: Re: Warum wird die Änderung nicht gespeichert?
Beitrag von: jBubbleBoy am 14.11.18 - 13:55:13
Du machst im QuerySave ein doc.save? Oder wo wird dieser Code ausgeführt?

Was die Klasse "CSCalendarEntry" so alles macht kann ich nicht sagen, denke aber das es ein Abbild der Felder des Kalenderdokumentes beinhaltet und beim Speichern bestimmt sehr viel berechnen muss ...
Wenn Du deinen Code wirklich über QuerySave ausführst, dann sollte ein "source.fieldSetText" auf jeden Fall funktionieren.
Titel: Re: Warum wird die Änderung nicht gespeichert?
Beitrag von: koehlerbv am 14.11.18 - 14:16:23
CSCalendarENtry beinhaltet eine weitere Kopie des Backend-Dokuments hinter dem geöffneten Frontend-Calendar Document. Kämpfen in Deinem Konstrukt bereits Frontend- (Source) und Backend-Dokument (Source.Document), kommt nun nochmals ein solches Objekt dazu.

Da einfachste Verfahren - wie Erik schon schrieb - ist es, wenn Du Dich hier pur auf Frontend-Methoden beschränken kannst. Ansonsten musst Du Frontend- und Backend-Objekte strikt voneinander trennen / getrennt behandeln.
Titel: Re: Warum wird die Änderung nicht gespeichert?
Beitrag von: schroederk am 14.11.18 - 14:30:09
Das "source.fieldSetText" war die Lösung.
Vielen lieben Dank dafür.  :knuddel:

Ich hoffe, dass ich nicht noch mehr an der Standardschablone rumwurschteln muss, nur damit die Assistentin der Geschäftsführung zufrieden ist.

Zum Hintergrund:
Ihr ist es zu lästig, bei Einladungen zu Telefonkonferenzen immer selber die Einwahlnummer, Raumnummer und Pin-Code reinzuschreiben.
Und unbedingt gewünscht (gefordert) war, diese Informationen im Ort und in der Beschreibung einzutragen. Der Raumname ist ähnlich benannt, wenn auch mit den für den Raum gelten Einschränkungen bezüglich Sonderzeichen.
Meine Idee war daher über den RnRMgr einen Ressource zu erstellen und immer wenn diese ausgewählt wird, die erforderlichen Informationen aus einer Hilfs-DB heranzuziehen. Das habe ich dann halt im QuerySave der Kalender-Maske eingebaut.

Nochmals Danke sehr.
Titel: Re: Warum wird die Änderung nicht gespeichert?
Beitrag von: Pfefferminz-T am 15.11.18 - 06:54:17
Die Standardfunktion, dass diese Informationen aus dem hinterlegten Kalenderprofil immer in eine Besprechungseinladung eingefügt werden, ist bekannt?
Titel: Re: Warum wird die Änderung nicht gespeichert?
Beitrag von: schroederk am 15.11.18 - 07:33:48
Die Standardfunktion, dass diese Informationen aus dem hinterlegten Kalenderprofil immer in eine Besprechungseinladung eingefügt werden, ist bekannt?

Ich bin mir nicht sicher, was Du jetzt meinst. Was wohl bedeutet: ist mir nicht bekannt.  :-: