LotusScriptに関する、こんな雑談です。
処理の最初に 画面上の文書と現在のDBを取得するようなコードについて。
NotesSessionを定義しない分、コードが1行節約できるから、でもあるのですが。
もうひとつの理由は、NotesUIDocumentと紐づくNotesDatabaseが確実に取得できるためです。
処理の最初に 画面上の文書と現在のDBを取得するようなコードについて。
ふつうだと、こんな感じでしょうか。
- <方法1>
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim curDb As NotesDatabase
Dim uiDoc As NotesUIDocument
Set curDb = session.CurrentDatabase '現在のDB取得
Set uiDoc = ws.CurrentDocument '画面の文書取得
:
わたしは、こんな書き方をすることにしています。
- <方法2>
Dim ws As New NotesUIWorkspace
Dim uiDoc As NotesUIDocument
Dim curDb As NotesDatabase
Set uiDoc = ws.CurrentDocument '画面の文書取得
Set curDb = uiDoc.Document.ParentDatabase '現在のDB取得
:
NotesSessionを定義しない分、コードが1行節約できるから、でもあるのですが。
もうひとつの理由は、NotesUIDocumentと紐づくNotesDatabaseが確実に取得できるためです。
- 詳細をもう覚えていませんが2002年ころいちどだけ、
NotesUIWorkspace.CurrentDocumentのDBが、session.CurrentDatabaseとは別のDBだった、
という不可思議な体験があり、この時が方法1でした。
- そんな次第での用心もあって、文書画面とDBが確実にリンクする方法2を使っています。
方法2の方がお勧めだよ、とか、声高に言えるものでもありませんが、一度訊いてみたいなとおもいました。
LotusScriptの経験者で、方法2で書かれてる方、おいででしょうか。