はじめに
ルックアップでキーとなる「コピー元のフィールド」に商品コードを設定している場合、商品名で検索したくなる事がありますよね。
その時には「商品コード 商品名」というキーを追加作成し「コピー元のフィールド」に指定すると、商品コードや商品名でルックアップが可能になります。(入力された文字で部分一致して検索されるため)
例えば、
商品コード:A0001
商品名:サラダセット
キー:A0001 サラダセット
のような値になります。この場合に「サラダセット」と入力して取得すると「A0001 サラダセット」とルックアップの値が変わります。
ただこの場合は、商品名が変わるたびにそれぞれのアプリでキーの更新が必要になるという問題があります。
更新には変更前の値で更新対象レコードを取得し、変更後の値で更新という処理が必要で手間がかかるため、特に商品マスタが未整備で修正が多い状況だと致命的になります。
そこで、商品コードをキーとしたまま、検索用の文字列フィールドを追加する仕組みを作成してみます。
今回のカスタマイズで出来ること
文字列にキーワードを入力してチェックボックスにチェックを入れる
キーワードに一致するレコードをポップアップ表示する
レコードを選択するとルックアップにキーをセット
自動でルックアップ更新
という動きを作成します。
既存のルックアップはそのままにキーワード検索が追加できることがポイントです。
アプリ構成
Customineの設定
全体の設定はこのようになります。
エラーチェック
検索のチェックを入れた時にキーワードが空欄の場合はエラーダイアログを表示します。
また、エラー終了の際は検索のチェックもクリアします。
「フィールドの値を編集して値が変わった時」に「フィールド値が空ならば」と「フィールド値が空でないならば」で、検索にチェックがあってキーワードが空欄という判定になります。
「エラーダイアログを表示する」でエラーメッセージを表示した後は、「他のアクションの実行が完了した時」に「フィールド値をクリアする」で検索のチェックもクリアしておきます。
レコード取得とポップアップ表示
クエリを利用してレコードを取得してポップアップ表示します。ポップアップの中で1レコードだけを選択する仕組みです。
「フィールドの値を編集して値が変わった時」に「複数フィールドの全てが空でないならば」で2つのフィールドの両方に値がある時だけレコード取得するようにします。
「クエリで条件を指定してレコードを取得する」では、キーワードの値を元に商品コードと商品名の両方に対して検索しています。
その後、「レコードの一覧をポップアップで表示する」でポップアップ表示します。この時に「単一選択(ラジオボタン)」「未選択の場合OKを押せなくする」と設定することで、OKを押した時は必ずレコードを選択している状態になります。
選択したレコードを元にルックアップを取得
選択したレコードの商品コードでルックアップを取得します。
「確認・入力ダイアログで「OK」を押した時」に「フィールドに値をセットする」とした後に「ルックアップを取得しなおす」でルックアップを取得します。
終了処理
取得できたので、次に検索する時に使いやすいように初期状態に戻します。
ルックアップの取得を実行したら「フィールド値をクリアする」でキーワードと検索のチェックをクリアします。
今回は存在するレコードの値をセットしているので、ルックアップがエラーになる可能性がないことから「ルックアップで取得が成功した時」は使用していません。
また、レコード選択ダイアログをキャンセルする場合は、キーワードの入力間違いという可能性が高いので、「確認・入力ダイアログで「キャンセル」を押した時」に「フィールド値をクリアする」で検索のチェックのみクリアします
まとめ
ルックアップを強化するカスタマイズですので、是非ご利用ください。