はじめに

ルックアップでキーとなる「コピー元のフィールド」に商品コードを設定している場合、商品名で検索したくなる事がありますよね。

その時には「商品コード 商品名」というキーを追加作成し「コピー元のフィールド」に指定すると、商品コードや商品名でルックアップが可能になります。(入力された文字で部分一致して検索されるため)


例えば、

商品コード:A0001

商品名:サラダセット

キー:A0001 サラダセット
のような値になります。この場合に「サラダセット」と入力して取得すると「A0001 サラダセット」とルックアップの値が変わります。


ただこの場合は、商品名が変わるたびにそれぞれのアプリでキーの更新が必要になるという問題があります。

更新には変更前の値で更新対象レコードを取得し、変更後の値で更新という処理が必要で手間がかかるため、特に商品マスタが未整備で修正が多い状況だと致命的になります。


そこで、商品コードをキーとしたまま、検索用の文字列フィールドを追加する仕組みを作成してみます。


今回のカスタマイズで出来ること

  1. 文字列にキーワードを入力してチェックボックスにチェックを入れる

  2. キーワードに一致するレコードをポップアップ表示する

  3. レコードを選択するとルックアップにキーをセット

  4. 自動でルックアップ更新


という動きを作成します。


既存のルックアップはそのままにキーワード検索が追加できることがポイントです。


アプリ構成

フィールド名

フィールドコード

フィールドタイプ

キーワード

キーワード

文字列1行

検索

検索

チェックボックス

既存ルックアップ

既存ルックアップ

ルックアップ

商品名

商品名

文字列1行


Customineの設定

全体の設定はこのようになります。

エラーチェック

検索のチェックを入れた時にキーワードが空欄の場合はエラーダイアログを表示します。

また、エラー終了の際は検索のチェックもクリアします。


フィールドの値を編集して値が変わった時」に「フィールド値が空ならば」と「フィールド値が空でないならば」で、検索にチェックがあってキーワードが空欄という判定になります。

エラーダイアログを表示する」でエラーメッセージを表示した後は、「他のアクションの実行が完了した時」に「フィールド値をクリアする」で検索のチェックもクリアしておきます。


レコード取得とポップアップ表示

クエリを利用してレコードを取得してポップアップ表示します。ポップアップの中で1レコードだけを選択する仕組みです。


フィールドの値を編集して値が変わった時」に「複数フィールドの全てが空でないならば」で2つのフィールドの両方に値がある時だけレコード取得するようにします。

クエリで条件を指定してレコードを取得する」では、キーワードの値を元に商品コードと商品名の両方に対して検索しています。


その後、「レコードの一覧をポップアップで表示する」でポップアップ表示します。この時に「単一選択(ラジオボタン)」「未選択の場合OKを押せなくする」と設定することで、OKを押した時は必ずレコードを選択している状態になります。


選択したレコードを元にルックアップを取得

選択したレコードの商品コードでルックアップを取得します。


確認・入力ダイアログで「OK」を押した時」に「フィールドに値をセットする」とした後に「ルックアップを取得しなおす」でルックアップを取得します。


終了処理

取得できたので、次に検索する時に使いやすいように初期状態に戻します。


ルックアップの取得を実行したら「フィールド値をクリアする」でキーワードと検索のチェックをクリアします。

今回は存在するレコードの値をセットしているので、ルックアップがエラーになる可能性がないことから「ルックアップで取得が成功した時」は使用していません。


また、レコード選択ダイアログをキャンセルする場合は、キーワードの入力間違いという可能性が高いので、「確認・入力ダイアログで「キャンセル」を押した時」に「フィールド値をクリアする」で検索のチェックのみクリアします


まとめ

ルックアップを強化するカスタマイズですので、是非ご利用ください。