当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2011年2月3日木曜日

NameLookup関数について

今日は節分です。
季節の分かれ目ということで、立春、立夏、立秋、立冬の日付であるというのはなんとなく知っていました。でも、知ったのは割と最近の話です。いかんですな。反省・・・

家で邪気払いをする前に、下のボタンをクリックして、筆者のために邪気払いをしてください。
にほんブログ村 IT技術ブログへ


さてさて・・・
ドミノディレクトリ(アドレス帳)のユーザ文書を検索するための関数として、@NameLookup関数がR5から追加されています。
しかし筆者は、@DbLookup関数で間に合わせていたので、この関数を使ったことがありませんでした。
ということで、今回はこの@NameLookup関数について、簡単に検証してみましょう。

もちろん、Lotus Notes/Dominoは8.5を利用します。


早速、サンプルを提示します。
今回は、@DbLookupとの比較を行うと言うことで、2種類載せてあります。

--------------------------------------------------------------
【@DbLookupを使った場合】
dbname := @Subset(@DbName;1):"names.nsf";
vname := "($Users)";
uname := @UserName;
rvalue := "Department";
ret := @DbLookup("Notes":"NoCache";dbname;vname;uname;rvalue);
@Prompt([Ok];"ユーザの部署名";ret)


【@NameLookupを使った場合】
uname := @UserName;
rvalue := "Department";
ret := @NameLookup([NoUpdate];uname;rvalue);
@Prompt([Ok];"ユーザの部署名";ret)


いずれもユーザ文書にある「Department」フィールドの内容を表示する、というものです。

大きな違いは、以下のようになります。
1.@DbLookup関数は指定したビューがなかったり、検索結果がないと、「エントリが索引に見つかりません」というエラーになる。
  @Namelookup関数はエラーにはならずに、""が返ってくる。
2.@DbLookup関数は、指定したノーツDBのみを検索する。
  @Namelookup関数は、個人アドレス帳、ドミノディレクトリ、2次ディレクトリの順で検索する。(*1)
3.@DbLookup関数は、キー項目は1つしか設定できない。
  @NameLookup関数は、キー項目は複数設定できる。

*1 ロケーション文書中の「受信者名の入力補完機能」が"ローカルの次にサーバーを検索"になっていること!

@NameLookup関数は構文が簡単で便利なのですが、個人アドレス帳を先にチェックしてしまうというのが難点でしょう。
特に、8.0からは個人アドレス帳には「最近利用した連絡先」というものがあります。
自動的に、ドミノディレクトリのユーザ文書が追加されてしまうので、検索結果が異なってしまうことがあります。

やはり筆者は、@DbLookup関数を使うことにします。
どなたか、@NameLookup関数の有効的な使い方を教えてください。




【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: