Takenoff Labs

Lotus Notes/Domino に関する Tips や、クラシックの名曲などを紹介します

[Notes/Domino] ビューの列式を Lotus Script で変更すると、「署名してから文書が変更されたか、破損しています」エラーが表示される

ある方から、「ビューの列式を Lotus Script で変更すると、ビューを開いたときに "署名してから文書が変更されたか、破損しています" というエラーが表示されてしまう」というご質問をいただきました。トラブルシューティングが大好きなわたしは、頼まれてもいないのに調査いたしました :mrgreen:

まずは、現象の確認。以下のエージェントを用意しました。

Dim ss As New NotesSession
Dim db As NotesDatabase
Dim vw As NotesView
Dim cl As NotesViewColumn

Set db = ss.CurrentDatabase
Set vw = db.GetView("ビュー名")
Set cl = vw.Columns(0)
cl.Formula = "@関数式"

このコードを実行して、ビューを開いてみると……やはり「署名してから文書が変更されたか、破損しています」のエラーがステータスバーに表示されます。ビューの動作自体は問題なさそうですが、なんか気持ち悪いです。

署名関係ということで、思いつきで以下のようにコードを変更してみました。

Dim ss As New NotesSession
Dim db As NotesDatabase
Dim vw As NotesView
Dim cl As NotesViewColumn
Dim doc As NotesDocument

Set db = ss.CurrentDatabase
Set vw = db.GetView("ビュー名")
Set cl = vw.Columns(0)
cl.Formula = "@関数式"
Set doc = db.GetDocumentByUNID(vw.UniversalID)
Call doc.Sign()
Call doc.Save(True, True)

思いつきのわりには、ビンゴでした。 😀 これでステータスバーにメッセージは表示されなくなりました。

追加した部分は、ビューを文書として取得し、署名して保存しているだけです。文書として取得しているところが ❓ と思われる方もいらっしゃるかもしれませんが、Notesではビューだろうがなんだろうが、設計も文書も全部「Note」として管理してます。なので、とくに問題と思われます。

ちなみに、なぜこのようなメッセージが表示されるか……は、まぁバグなんでしょうけど。 :mrgreen:
推測としては、たぶん NSFNoteSign の実行し忘れ、あるいは NSFNoteOpen で OPEN_EXPAND を指定しない(エージェント以外で署名する場合は、OPEN_EXPAND が必要になります)、ってとこかもしれません。まぁ、Notesが内部で何やってるかなんて解らんですがヽ(´ー`)ノ

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
読み込み中...

トラックバック

トラックバックはありません

コメント

“ある方”より感謝申し上げます。

わぁ、sak様、わざわざコメントしていただいてすみませんです(汗

助かりました!ありがとうございます

コメントありがとうございます!
お役に立てたならうれしいです 🙂

※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。





(以下のタグが使えます)
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

For spam filtering purposes, please copy the number 4300 to the field below:

^
×