[Notes/Domino] フレームセットのフレームに特定文書を表示する方法
フレームセットのフレームに特定の文書を表示したい場合は多々あると思います。
が、文書リンクをフレームに貼り付けてしまうと、本番環境とテスト環境を分けている場合に、不都合が生じてしまうことがあります。(権限の関係でリンク先が見られなくてエラーになる、本番環境に設計置換する場合に本番用のリンクを貼りなおさなければならない、などなど。)
この問題を解消するには、以下のようにするとよいです。
(あらかじめ、文書を検索するためのビューを用意しておいてください。)
1. 文書を表示したいフレームのプロパティで、種類を「URL」にし、「@」をクリックします。
2. 「式の編集」ダイアログで、以下の式を入力してください。
unid := @Subset(@DbLookup("":"NoCache"; ""; "検索用ビュー名"; "検索キー"; ""; [FailSilent]:[ReturnDocumentUniqueID]); 1); "notes://" + @Name([CN]; @Subset(@DbName; 1)) + "/" + @WebDbName + "/" + @If(unid = ""; "フォーム名?OpenForm"; "0/" + unid + "?OpenDocument")
以上で終了です。
文書が無い場合は新規文書がフレーム内に表示され、ある場合はその文書が表示されるようになります。
(留意事項)
- 文書が無い場合に特定ページを表示したい場合は、「"フォーム名?OpenForm"」の部分を「"ページ名?OpenPage"」にするとよいでしょう。
- デフォルトビューが無い場合は、「"0/"」のところは「"検索用ビュー名/"」のようにしてください。
- Web の場合は、「"notes://"」の部分が「"http://"」に変えます。両対応したい場合は、@ClientType によって振り分けるといいでしょう。(ただし、Web 用の URL がサーバー名の共通名を使用していない場合などは、それ相応の対処をしてください。)
(2009/05/07補足)
競合文書があると、フレームセットごと落ちてしまうようなので、@DbLookup に @Subset をかけるよう、式を変更しました。
情報をくださった SAK様、ありがとうございました!
コメント
なるほど、その手がありましたか!
参考にさせていただきありがとうございました。
Posted at 2009/05/04 7:38 AM by 大川宗之
大川さん、コメントありがとうございます! 🙂
参考になれば幸いでございます。
# 大川さんのブログ、早速ブックマークに登録させていただきました! 🙂
Posted at 2009/05/04 12:58 PM by takenoff
便利に使わせてもらっています。が、表示させる文書に競合文書ができるとフレームセットごと落ちるので、最近は@dblookupの結果に@subsetを掛けています。
Posted at 2009/05/07 10:40 PM by SAK
SAK様、コメントありがとうございます! 🙂
をををを、競合文書のことは1ミリも考えていませんでした(汗
たしかに@Subsetをかけたほうがいいですね。
補足ありがとうございました!
Posted at 2009/05/07 11:31 PM by takenoff
※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。