2024/02/02

@DbLookup の使い方

前回は @DbColumn について解説しました。この@関数はビューの指定した列の値を取得でき、別途登録した文書をマスタデータをして利用する例を紹介しいました。今回は  @DbLookup を紹介します。@DbColumn と同様にビューを利用する関数なのですが、ビューを検索した結果を取得する関数となります。使い方に類似点が多いのでセットで覚えておくと便利です。

前回作成した部のマスタと報告書フォームを利用する内容となっていますので、必要に応じて前回の記事もご参照ください。


機能イメージ

この関数で実現できる機能をまとめます。

課を管理するマスタデータがあったとします。下図の通り、部に従属する課を登録するタイプです。


報告書のフォームでは、選択した部に従属する課だけを選択肢に表示しています。このようにフォーム上の値を使用してビューを検索し、ヒットした文書から値を取得して利用することができます。操作性を向上させ、入力の手間を省くために重要な機能ですね。


フォームの設計

では、フォームの設計を確認しましょう。

課を選択するフィールド Func を作成します。フィールドの種類はダイアログリストです。

フィールドプロパティの[制御]タブには次のように設定します。@DbLookup が登場しましたね。


@DbLookup の仕様

デザイナーヘルプによると @DbLookup の構文は次のように記載されています。

@DbLookup(class:cache; server:database; view; key; columnNumber; keywords)

引数は 6 つですが、3 つ目の view までは @DbColmun と同じなので省略します。残りの引数の指定方法は次の通りです。

key 文字列 ビューを検索する文字列
ソートされた最初の列に表示される値
columnNumber 数値ビュー内の列番号を指定
keywords 省略可能
検索オプションをキーワードで指定
今回は使用しません

戻り値は、キーと一致した文書の指定した列の値がリスト値で返されます。


なお、検索で使用される 1 列目は、ソートされている必要があります。必ず設定するようにしましょう。


@DbLookup の動作

サンプルで示した式を具体的に確認しましょう。

@DbLookup("Notes":"NoCache"; ""; "vFunc"; Dept; 2)

vFunc というビューに接続しているところまでは、@DbColmun と同じですね。

次の引数には Dept と指定されています。ダブルクォーテーションで括られていませんので、フィールドを指定していることになります。Dept に入力された "情報システム部" という値で vFunc ビューを検索することになります。そして一致した文書の 2 列目の値が返されるという式になっています。

この式を中心に入力中の文書、フォームの設計とビューの設計を図式化すると次のようになります。検索をする分、@DbColmun より少し複雑ですが、このように整理すると、それぞれの要素がどのように関係しているかよくわかりますね。


まとめ

前回の @DbColmun に続き @DbLookup の 2 つの関数を紹介しました。どちらもノーツのアプリケーション開発で頻出の関数です。例にしたのはダイアログリストの選択肢を与えるパターンでしたが、計算結果フィールドで検索した結果を表示するなど、さまざまな使いかがあります。是非とも理解しておきましょう。

ところで、今回は@関数の挙動を解説することを主眼にしていたため、細かな設定について解説を省いています。それが原因でうまく動かないパターンがあります。次回はダイアログリストフィールドの設定や挙動をもう少し掘り下げて解説します。


0 件のコメント:

コメントを投稿