式言語
指定されたビュー (またはフォルダ) で、最初のソート列の値が、指定されたキー値と一致するすべての文書を取得します。選択された文書ごとに、ビューの指定された列の内容か、指定されたフィールドの内容を返します。
構文@DbLookup( class :cache ; server :database ; view ; key ; fieldName ; keywords ) または @DbLookup( class :cache ; server :database ; view ; key ; columnNumber ; keywords) メモ 文字列引数 class と cache の間、および server と database の間の分離記号はコロンで、それ以外の分離記号はセミコロンです。
パラメータclass
キーワード。省略可能。複数のキーワードを連結できます。
レプリカは次の順序で検索され、最初に検出されたレプリカが使用されます。
ワークスペースに複数のレプリカがあり、積み重ねられているときは、最も上にあるレプリカが使用されます。
ワークスペースに複数のレプリカがあり、積み重ねられていないときは、現在のサーバーと一致するアイコンが検索され、そのレプリカが使用されます。現在のサーバーと一致するアイコンがない場合は、ワークスペースに最初に追加されたアイコンが使用されます。
このビューを @DbLookup で参照するとき、次のように別名の LName だけを引用符で囲んで指定できます。
"LName"
ビュー名に別名がない場合、[By Author] 名とサブメニュー表示の [Last Name] を引用符で囲んで (別名なしで) 指定します。また、このビュー名は式で使うものなので、\ が正しく解釈されるようにもう 1 つ \ を付けます。
"By Author\\Last Name"
キーを指定するテストできる値は、キーと一致する (等しい) ものだけです。その他の < (より小さい) などの別の演算子は指定できません。 一致させるキーとして定数を指定するだけでなく、編集可能なフィールドの値を使うこともできます。たとえば、2 つのフィールドから成る [ContactInfo] フォームを作成できます。つまり、[contactName] フィールドと [lookupComments] フィールドです。ユーザーが [contactName] フィールドに担当者名を入力すると、その担当者に関連付けられたコメントのリストが [lookupComments] フィールドに表示されるようにするとします。まず、[contactName] フィールドを編集可能な文字列フィールド (またはダイアログリストフィールドなどの選択肢リストフィールド) として設定します。[lookupComments] フィールドの入力確認式として、たとえば次のコードを記述します。
@DbLookup("":"NoCache";"Sales":"Customers.nsf";"ContactList";contactName;"Comments")
ユーザーが、たとえば「Susie Queue」という顧客名を [ContactInfo] フォームの [contactName] フィールドで入力または選択し、[F9] キーを押して文書を更新すると、[lookupComments] フィールドの式によって以下のタスクが実行されます。
取り出されるのは、検索キーと完全に一致する値だけです。大文字と小文字は区別されませんが、スペースや分離記号は正確に一致しなければなりません。[PARTIALMATCH] キーワードを指定した場合を除き、全体が一致しなければなりません。
検索が機能するには、ソートされた列がビュー内に存在しなければなりません。存在しない場合はヌル値が返されます。ソートされていても分類されていない複数値フィールドの場合、正確な結果は返されません。
フィールド名を指定する検索で fieldName を指定すると、フィールドに実際に保存されている値が返されます。これはビューに表示される値とは異なる場合があります。指定したビューに表示されているどの文書のどのフィールドからもデータを取り出すことができますが、フィールドがビューの列として表示されていない場合は、そのフィールドを見つけるために文書全体が検索されるので、検索に時間がかかることがあります。@DbLookup を使ってリッチテキストフィールドからデータを取り出すことはできません。 一致した文書の中には、別のフォームを使って作成したものであるために、指定したフィールドが含まれていない文書もあります。
列番号を指定するビューの列に基づく検索のほうが、ビューに表示されないフィールドに基づく検索よりも効率的です。最良の結果を得るには、値を取り出すフィールドがビューに表示されているようにしてください。 たとえば、ビューが製品 ID で分類されており、検索キーに「01776」を、列に 2 を指定した場合、製品 ID 01776 のすべての文書の列 2 に表示される値が返されます。
columnNumber パラメータを指定するときは、ビューの列は左から右に数え、左端の列が列番号 1 となります。ただし、検索ではすべての列が数えられるわけではありません。これは、Lotus Domino がビューに索引を付ける方法の特性によるものです。
検索用の列番号は次の方法で計算します。
1 ビュー内の列を左から右に数えます。
3 次の @関数のみが使われている列は数えません。@DocChildren、@DocDescendants、@DocLevel、@DocNumber、@DocParentNumber、@DocSiblings、@IsCategory、@IsExpandable。
4 列を左から右に数え直して確認します。
戻り値にアクセスする@DbLookup により複数の値が返されるときは、現在のフィールドのインフォボックスに指定されている複数値の分離記号で区切られたリストの形式で返されます。 @DbLookup は、64KB を超えるデータを返すことはできません。次の公式を使って、@DbLookup で返されるデータ量を調べます。
文字列を返す検索の場合
2 + (2 * 返されるエントリ数) + 全エントリの合計文字列サイズ
数値または日付を返す検索の場合
(10 * 返されるエントリ数) + 6
使用法この関数は、列式、選択式、メールエージェントでは使えません。 サーバーエージェントとセキュリティ@DbLookup が含まれているデータベースを参照元データベース、アクセスされるデータベースを参照先データベースと考えます。 @DbLookup をエージェントで使うとき、参照元データベースを管理するサーバーと同じサーバーまたは別のサーバーで実行されている参照先データベースのデータにアクセスできます。エージェントの署名者には、参照先データベースに対する [読者] 以上のアクセス権が必要です。
メモ R5 以前のサーバーで実行されるエージェントは、参照元データベースと同じサーバーにある参照先データベースにのみアクセスできます。さらに、エージェントの署名者には、参照先データベースに対する [読者] 以上のアクセス権が必要です。ACL でレプリカ ID を使用する機能は、Release 6 でも引き続きサポートされています。Release 6 より前のデータベースの ACL にエージェントの署名者がなく、レプリカ ID はある場合は、レプリカ ID が代わりに使用されます。参照元データベースにアクセス権を与えるには、参照元データベースのレプリカ ID (たとえば 85255CEB:0032AC04) を参照先データベースの ACL に追加し、[読者] 以上のアクセス権を割り当てます。
その他のエージェントとセキュリティその他の種類の式やエージェントで @DbLookup を使用する場合は、ユーザーのクライアントに保存されているすべての参照先データベースに対して無制限にアクセスできます。参照先データベースが別のサーバーに保存されている場合、@DbLookup からそのサーバーにアクセスできるかどうかは、ユーザーの Lotus Notes ID に基づくエージェントの署名者のアクセスレベルによって決まります。 @DbLookup は、ビューの読み込みアクセスリストの影響を受けます。
例 関連項目