[Notes/Domino] ビューの列式を Lotus Script で変更すると、「署名してから文書が変更されたか、破損しています」エラーが表示される
ある方から、「ビューの列式を Lotus Script で変更すると、ビューを開いたときに "署名してから文書が変更されたか、破損しています" というエラーが表示されてしまう」というご質問をいただきました。トラブルシューティングが大好きなわたしは、頼まれてもいないのに調査いたしました
まずは、現象の確認。以下のエージェントを用意しました。
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」として管理してます。なので、とくに問題と思われます。
ちなみに、なぜこのようなメッセージが表示されるか……は、まぁバグなんでしょうけど。
推測としては、たぶん NSFNoteSign の実行し忘れ、あるいは NSFNoteOpen で OPEN_EXPAND を指定しない(エージェント以外で署名する場合は、OPEN_EXPAND が必要になります)、ってとこかもしれません。まぁ、Notesが内部で何やってるかなんて解らんですがヽ(´ー`)ノ
コメント
“ある方”より感謝申し上げます。
Posted at 2008/10/26 9:17 PM by sak
わぁ、sak様、わざわざコメントしていただいてすみませんです(汗
Posted at 2008/10/26 9:31 PM by takenoff
助かりました!ありがとうございます
Posted at 2009/10/30 2:00 PM by 匿名
コメントありがとうございます!
お役に立てたならうれしいです 🙂
Posted at 2009/10/31 12:53 AM by takenoff
※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。