Takenoff Labs

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

[Notes/Domino] 設計非表示で置換した場合、ビューのイベントスクリプトが動作しなくなることがある

設計や文書のプロパティをユーザーに見せたくない場合、「式 と LotusScript を非表示」にチェックを入れて置換することがあると思います(厳密にはこれではデータを隠すには不十分ですが)。が、これをやると、「NotesView.SelectionFormula」の値が取れない(ネタ元: SAKさま)など、一部動作が変わってしまうものがあるようです(x_x)

設計関連のプロパティが取得できないのは仕方ないにしても、今回遭遇した現象は、完全にバグのようです。以下、再現手順を記載します。

  1. データベースA に ビューA を作成し、PostOpen などのイベントに、Msgbox などを入れておきます。
  2. データベースB を、「式 と LotusScript を非表示」にチェックを入れて、データベースA のテンプレートで置換します。
  3. データベースB で、ビューA のイベントが正常に動作することを確認します。
  4. データベースA で、コピー元を ビューA とした ビューB を作成します。(「新規ビュー」ボタンから作ってください。コピペした場合は現象が発生しません。)
  5. データベースB を、「式 と LotusScript を非表示」にチェックを入れて、データベースA のテンプレートで置換します。
  6. データベースB で、ビューB を開いても、イベントが正常に動作しません。

この現象は、サポート技術情報に載っていました。

上記情報だけでは原因がよく解らないので、もう少し調べてみたころ、「新規ビュー」ボタンでコピー元を指定して作成した場合、コンパイル結果のバイトコードが格納される、「$ViewScript_0」(グローバルにスクリプトがある場合は「$ViewGlobalScript_0」も)アイテムがコピーされないことが解りました。

ビューの設計プロパティ

設計を非表示にすると、ソースコードの入っている「$ViewScript」のほうは消してしまうため、バイトコードも無ければ動作のしようがない、ということなのでしょう(たぶん)。

回避策は、問題が発生しているビューのイベントスクリプトを変更(必要であればグローバルの部分も)して、ビューを保存し直し、再度設計置換すればよいみたいです。イベントスクリプトを変更して保存し直せば、「$ViewScript_0」アイテムが作成されるので、うまくいくということのようです。

開発していた DB と動作が異なるなんて怖すぎるので、なるべく設計非表示の置換は使用しないか、使用するにしても、置換後の状態でテストすることが重要ですね……。

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
読み込み中...

トラックバック

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

コメント

コメントはありません

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





(以下のタグが使えます)
<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 8783 to the field below:

^
×