ページビューの合計

2017年11月20日月曜日

Lookup式について

みなさま、こんにちは!!
先週はノーツコンソーシアムノーツ・しこく・フェスタとイベント盛りだくさんな一週間でした。
ここでは詳細には触れませんが、改めて私・・・もちろん弊社・・・が、皆様に支えていただいているんだと実感した次第です。
このような思いをぜひ、他のNotesユーザー様に味わって頂く機会を作ることができればと感じております。

さて今回は私がNotesを使い始めて、最初に使いたいと思ったLookup関数について記載致します。

さてLookupといえば、Excelを思い浮かべる方も多いかと思いますので、まずはExcelのヘルプ文書になります。


よく使うのは、マスターシートをVLOOKUPで参照するようなものではないでしょうか。

もろちんNotesでも同じような機能が簡単に利用できます。
それではNotesのヘルプを見てみましょう。


Notesでは@関数である @DbLookup が該当します。

詳細はヘルプ文書を見ていただくとして、具体的な例としてヘルプにもある以下コードをみてみましょう。

@DbLookup("":"NoCache";"Sales":"Customers.nsf";"ContactList";contactName;"Comments")

まず "":"NoCache" の部分ですが、コロンの前がclassになります。
Notesデータベースを指定する場合、"Notes"もしくは""と記載します。
続いて"NoCache"ですが、詳しくはヘルプに記載されていますが、ビューの最新情報を取得したい場合などに指定する引数となります。
私は基本的に"NoCache"を指定します。

続いて "Sales":"Customers.nsf" です。
前半がサーバー名、後半がアプリケーション名になります。
アプリケーションがサーバーのData内サブフォルダにある場合は、フォルダ名¥アプリケーション名となります。例えばメールファイルですと、"mail¥Customers.nsf" となります。

次の "ContactList" です。
こちら検索する対象のビュー名となります。
この例ですと、Custmers.nsf内のContactListというビューからデータを検索することになります。

次の contactName です。
こちらは呼び出そうとしているフォーム内に存在するkeyとなるフィールド名になります。
先の検索対象ビューの最初の列を検索し、一致した行を検索対象のレコードとして選択することになります。

最後の "Comments" です。
こちらは先のkeyにより特定されたレコードの取得する値の入った列のフィールド名を指定します。
例えば以下のようなビューですと、戻り値はComments列の「テスト」や「参考」、「コメント」になります。


なおフィールド名以外に、列番号でも同じ結果が得られます。
先の例ですと、"Comments"のかわりに"4"と指定することが可能です。
個人的には列番号を使っています。

なお例の式には[keywords]が省略されていますが、こちらもヘルプをご覧ください。

以上となります。
フォーム内[lookupComments]に先の式を設定し、keyである contactName にセットされる値によって得られるデータは、下記のようになります。


以上でDbLookupについての説明は終りますが、もうひとつNotesには近い関数があります。
@DbColumn という関数になります。


こちらは@DbLookupと違い、[key]がありません。そのため戻り値としては対象の列の値となります。

私がよく利用する例としては、フォーム内に設置したダイアログリストの選択するリストとして、同一アプリケーション内のビューから一覧を取得するというものがあります。

下記例ですと、同一アプリケーション内のカテゴライズされたビュー[byCategory1]の1列目をリストとして表示させることが可能です。

@DbColumn("":"NoCache";"";"byCategory1";1)

これにより、利用ユーザーがカテゴリを選択で選べます。また文字の揺らぎ(大文字小文字の違いや、全半角の違い)による別項目となることを減らすことも可能です。また新しい値を可としておくと、こちらが保存されたタイミングで"NoCache"の効果により、次にダイアログリストを開くと、新規の項目もリストに追加された状態で利用可能となります。



以上、ご存知の方には全く必要のない記事ではありますが、個人的にこのNotesにはまり込む最初の要素になりますので、取り上げさせて頂きました。

0 件のコメント:

コメントを投稿