2010年2月18日木曜日

親文書を削除をさせない

前回のエントリでは、親文書が削除されてしまった子文書の数を調べるLotus Scriptをご紹介しましたが...

そもそも子文書があるのに親文書が削除できてしまう仕様が問題なんだよ、なんて言われちゃう場合もあります。

そこで、削除しようとしている文書に関連する子文書があるとメッセージを表示して削除できなくする方法をご紹介します。

文書の削除を認識するにはデータベーススクリプトの Querydocumentdelete というイベントを利用します。

このイベントに書かれた処理は、文書を削除する前に実行されます。

例えば、ビュー上で複数の文書にチェックを付け、Delete キーを押した直後に実行されます。

選択した削除対象の文書は NotesUIDatabase クラスの Documents プロパティで取得できます。

削除対象の文書( NotesDocument ) を親とする返答文書(子文書)は NotesDocument クラスの Responses プロパティで取得できます。

返答文書があれば、Responses の件数( Count )が0より大きくなりますが、その場合にメッセージを表示します。

この時 Continue に False を設定することで削除をキャンセルできます。
Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
    Dim dc As NotesDocumentCollection
    Set dc = Source.Documents

    Continue = True
    Dim doc As NotesDocument
    Set doc = dc.GetFirstDocument
    While Not ( doc Is Nothing )
        If doc.Responses.Count > 0 Then
            Messagebox "選択文書の下位に文書があります。", 0 +48 , "警告"
            Continue = False
            Exit Sub
        End If
        Set doc = dc.GetNextDocument( doc )
    Wend
End Sub

0 件のコメント:

コメントを投稿