作成者カテゴリ 
公開
Yuki
10/18/2017 10:58 PM
フォーム
ノーツサーバノーツクライアントサーバOSクライアントOSネットワークプロトコル
N/AN/AN/AWindows 7N/A

LotusScript PostSaveイベントでSaveしたい

「入れ子になっているフォームのイベントを実行しようとしました」というメッセージが表示されて困っています。

掲示板のようなフォームを作っています。

テキストフォールド:txtName
リッチテキストフォールド:rtxtMessage

rtxtMessageを入力した人の名前がtxtNameに自動で入力されるようにしたいです。

Querysaveで以下の処理を行っています。

If source.FieldGetText("rtxtMessage") <>"" Then
  Call source.FieldSetText("rtxtMessage",UserName)
End If


これだけだと、ファイルのみ添付された場合にTextが取得できないため、名前が自動入力されない不具合が生じました。

対策としてPostSaveイベントで下記の処理を行いました。

Dim flgChange As Boolean
Dim varObjects As Variant
Dim doc As NotesDocument

If source.FieldGetText("txtName")="" Then
  Set doc = source.Document
  Set varObjects = doc.GetFirstItem("rtxtMessage")
  If Not Isempty(varObjects.embeddedobjects) Then
    Call source.FieldSetText("txtName",UserName)
    source.Save
  End If
End If

End Sub

*QuerySaveイベント後にテキストが入力されていない(txtName="")場合で、Embeddedobjectsが空でなければ、オブジェクトのみ貼り付けられたと判断して、UserNameをセットしています。

*PostSaveイベントなのは、DB保存してからでないと、リッチテキストフィールドのEnbeddedobjectsプロパティが取得できなかったためです。

Saveイベントがループしないように、IF文の中にSaveメソッドを置いているのですが、冒頭のメッセージが表示されてしまいます。

メッセージは表示されるものの、保存処理は実行されていますので、機能に問題はないのですが、気持ちが悪いのでメッセージが表示されないようにしたいです。
(なお、Saveメソッドを使わないと、文書は保存されませんでした。)

LotusScriptに触れたばかりで、変なところが多いと思いますが、よろしくお願いいたします。


[Previous Main Document]
LotusScript PostSaveイベントでSaveしたい (Yuki) * 現在地 *
. . 解決しました (Yuki)
[Next Main Document]