前回は @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 件のコメント:
コメントを投稿