DBリンク項目の選択肢を、他の項目の入力内容に応じて絞り込む方法
「楽楽販売」のレコード入力画面で、「(同じ画面の)他の項目で選んだ内容に応じて、DBリンク項目の選択肢を動的に絞り込みたい」というお問い合わせをよくいただきます。
よくある活用例
-
顧客ごとに扱える商品や単価が異なる
→入力した顧客IDに応じて表示する商品の選択肢を絞り込む - 商品ごとに紐づくオプションが異なる
→選択した商品に応じて、表示するオプションの選択肢を絞り込む
この操作は、メニュー設定の「リンク先レコードの絞込み」機能や
DBリンクの「検索プルダウン」を利用することで実現可能です。
DBリンク項目を絞り込んで表示する方法
DBリンク項目で表示される選択肢(リンク先のレコード)は、デフォルトではリンク先の全レコードが表示されますが、設定によって表示を絞り込むことが可能です。
絞込みの方法には、主に以下の2通りがあります。
1. あらかじめ作成した絞込み条件を適用する
リンク先のDBにて作成済みの絞込み条件(例:「有効なレコードのみ」など)を、DBリンク項目に固定で適用する方法です。
詳細な設定方法につきましては、下記記事をご参照ください。
DBリンク項目の入力時に選択できるレコードをあらかじめ絞り込む方法
2. 入力値に応じて動的に絞込み条件を変更させる
(こちらの記事でご紹介します)
こちらの記事でご紹介する方法です。
レコード入力画面の他の項目の入力値(例:「顧客ID」項目で選択された値)を利用して、DBリンクの選択肢を動的に絞り込む(=連動させる)設定です。
2つのアプローチをそれぞれ、以下にご説明します。
入力内容や選択肢に応じて動的に絞り込む2つのアプローチ
「楽楽販売」において、「1つの項目(例:顧客や種別)を選択したら、
それに連動して別の項目(例:請求書や区分)の選択肢を動的に制限・絞り込みたい」
という要件を実現するには、仕様・設定手法や運用目的に応じて以下2つのアプローチがあります。
| 実装手法 | 仕組みと概要 | 代表的なユースケース |
|---|---|---|
| アプローチ1:リンク先レコードの絞込み (メニューの入力項目設定) |
同じ入力画面上の別の項目(例:顧客ID)の入力値とリアルタイムに連動させて、DBリンク項目の選択候補(虫眼鏡やプルダウン)を絞り込みます。 | 伝票入力などで、「先に特定の顧客を選択し、その顧客に紐づく過去の請求書や契約のみを選択肢(候補)として提示させたい」場合。 |
| アプローチ2:検索プルダウン(分類設定) (DBリンク項目設定+マスタDB) |
選択肢を管理する「マスタDB」を作成し、登録方法「検索プルダウン」で分類階層(分類1〜3)を定義して段階的に連動させて選ばせます。 | マスタやレコード入力において、「発注種別(大分類)を選ぶと、発注区分(小分類)のプルダウンがその種別内のものだけに自動連動して切り替わる」階層入力を実現したい場合。 |
※標準の「選択肢(1件選択)」タイプ項目同士では、このような他項目と連動した動的な出し分け・制御は行えません。
要件に合わせて、以下の具体的な設定手順を使い分けてください。
各アプローチの具体的な設定・操作手順
アプローチ1:メニュー設定の「リンク先レコードの絞込み」を活用
発注入力時に、選択した仕入れ先の扱っている商品のみ表示したいという例をご紹介します。
見積入力時に得意先ごとに応じた商品を表示したいという場合も同様です。
「発注DB」の入力画面において、選択した「仕入先No」に連動して
「商品No(商品マスタへのDBリンク項目)」の選択候補をリアルタイムに絞り込む手順です。
事前準備
以下DBを用意します。
1.仕入先マスタ
仕入先1件に対して1レコードを登録するデータベースです。
2.商品マスタ
商品1件に対して1レコードを登録するデータベースです。
※商品マスタには「仕入先マスタ」へリンクするDBリンク項目
(例:仕入先No)を登録します。
3.発注DB
発注1件に対して1レコードを登録するデータベース
※発注DBには「仕入先マスタ」「商品マスタ」へリンクするDBリンク項目
(例:仕入先No、商品No)を登録します。
設定方法
【設定箇所】
左パネル > [対象DBのスパナマーク] > 基本設定 > メニュー設定 > 対象メニューの「設定」ボタン ➔ 「入力項目設定」
【設定手順】
- 「発注DB」の右端にある「スパナアイコン(DB設定)」 ➔ 「メニュー設定」を開きます。
- 対象となるメニュー(「レコード入力タイプ」等)の右端にある「設定」ボタンをクリックし、最下部「レコード入力画面に関する設定」にある「入力項目設定」の「設定」を開きます。
- 「項目」プルダウンから、絞り込みを適用したい「DBリンク項目(例:商品No)」を選択し、「追加」ボタンをクリックします。
※「仕入先No」を選択したうえで、表示を絞り込みたい内容は「商品No」のため「商品No」を追加します。 - 追加された項目の詳細設定パネルにある「リンク先レコードの絞込み」の「+追加」 ➔ 「DB項目の入力内容による絞込み条件の設定」を選択します。
- 以下の条件設定の組み合わせを指定して「確定」をクリックし、メニュー設定全体も保存します。
▼絞り込み条件
左辺(リンク先の商品マスタの項目):仕入先No
演算子: 「と等しい」
右辺(現在の発注DBの項目): 仕入先No
※この設定は、入力画面で絞り込みの前提となる項目(例:仕入先No)に値が入った状態で、対象のDBリンク項目(例:商品No)の虫眼鏡マークを押す(またはプルダウンを開く)ことで機能します。先に絞り込みの前提となる項目を入力するようにお願いいたします。
アプローチ2:DBリンクの「検索プルダウン(分類設定)」を活用
例として、「発注管理DB」へのデータ登録時に、「発注種別(大分類)」に応じて
「発注区分(小分類)」の選択肢をプルダウン形式で動的に出し分ける設定手順です。
設定方法
◆ステップ1:選択肢の組み合わせを管理する「マスタデータベース」を作成する
連動させたい項目の組み合わせを、事前にデータとしてレコード保持しておく専用のDBを構築します。
- 「発注区分マスタ」などの名称でデータベースを新規作成します。
- 項目として、「発注種別(大分類)」(テキスト1行等)と、「発注区分(小分類)」(テキスト1行等)の2つを項目追加します。
- 作成したマスタDBに対し、許可したい組み合わせを1組み合わせ=1レコードとしてすべて登録します。
(例:[種別:開発費 / 区分:A]、[種別:開発費 / 区分:B]、[種別:業務依頼 / 区分:D] ...)
◆ステップ2:入力側のDBに「DBリンク項目」を追加する
実際に業務データを入力するDB(例:発注管理DB)に、ステップ1のマスタを参照するための項目を紐付けます。
- 項目追加より「項目タイプ」で「DBリンク項目」を選択し、リンク先DBに手順1で作成した「発注区分マスタ」を指定して追加します。
◆ステップ3:DBリンク項目の登録方法を「検索プルダウン」に変更し、階層を定義する
追加した項目の詳細設定において、プルダウンが連動して切り替わるための階層表示レイアウトをマッピングします。
- 作成したDBリンク項目の右端にある「設定」ボタンをクリックします。
- 「登録方法」にて、「検索プルダウンを使用する」を選択します。
- 「表示項目設定(階層の定義)」エリアにおいて、以下の通り階層構造を指定し、確定してDB設定を保存します。
- データ選択: 「発注区分」を指定します。(これが最終的に発注管理DBに保存される値になります)
- 分類1: 「発注種別」を指定します。(これが1階層目として先に選ばせる大分類になります)
※これにより、入力画面ではまず大分類である「発注種別」のプルダウンのみが表示され、そこで選択した内容に紐付く「発注区分(小分類)」だけが、次のプルダウンに自動連動して絞り込まれて表示されるようになります。
制限に関する補足
これらの連動・絞り込み機能を運用するにあたり、「楽楽販売」のシステム設計上の制限事項や仕様による挙動の違いがいくつか存在します。構築前に必ず以下をご確認ください。
アプローチ1:メニュー設定の「リンク先レコードの絞込み」について
右辺の条件として使用できない「4つの項目タイプ」
メニューの入力項目設定による動的絞り込み条件の「右辺(現在の入力中DB側の項目)」として、以下のデータ項目を指定することはできません。これらをトリガーにして連動させたい場合は、テキスト(1行)等に一度値を変換して持たせるなどの設計変更が必要です。
- 「数値計算」タイプ項目
- 「日時と日時の計算」タイプ項目
- 「日時と時間量の計算」タイプ項目
- 「従属項目」タイプ項目
※また、DBリンクを設定している「従属項目のDBリンク項目」自体に対しても、動的絞り込み条件(リンク先レコードの絞込み)を追加することはできません。
※注意:条件の右辺(連動元)に指定されている項目の「項目タイプ変更」を実施した場合、システム内の整合性を保つため、その項目を使用しているすべての「リンク先レコードの絞込み」設定が自動的に消去・クリアされます。タイプ変更時は、再度メニュー設定の再指定が必要になりますのでご注意ください。
既存レコード編集・保存時における整合性チェックのタイミング
「新規登録」の際には、絞り込み条件に合致しない誤った値を登録しようとすると
「許可されていない値です」とエラーで確実に弾かれます。
しかし、すでにDB上に保存されている既存レコードを「編集(更新)」して保存した際、
以下のいずれの変更も行われていない場合は、例外的にエラーを発生させずにそのまま保存が完了する仕様となっています。
- 対象のDBリンク項目(例:請求書No)の選択値が、画面表示時から変更されていない場合
- 絞り込み条件の右辺に使っている項目(例:顧客ID)の入力値が、画面表示時から変更されていない場合
アプローチ2:DBリンクの「検索プルダウン(分類設定)」について
最大表示件数の制限(100件上限)
DBリンク項目において、登録方法を「検索プルダウンを使用する(階層式含む)」に設定している場合、1つのプルダウン内にリスト表示できるデータ件数は「最大100件まで」というシステム仕様上の厳格な上限があります。
マスタDBに登録されている特定の階層(例:指定した種別)に紐付くデータの数が100件を超えている場合、101件目以降の選択肢が表示されなくなります。
また、候補数が数十件を超える場合でも画面描画の遅延や視認性の低下を招くため、候補データ数が極めて多い場合は、登録方法を「検索ウィンドウ(虫眼鏡)を使用する」に指定し、メニュー設定側の「リンク先レコードの絞込み」で制御することを強く推奨いたします。
関連マニュアル
さらに詳細な入力画面の設定手順や、DBリンク、項目の使い分けについては下記記事をご確認ください。
DBリンク項目で階層式(連動型)プルダウンを作成する具体的な設定方法
マスタDBの項目を利用して、複数のプルダウンを連動させて選択しやすくするための、登録方法「検索プルダウン」の詳細設定手順を解説しています。
DBリンク項目で検索ウィンドウではなく、階層式で項目を選択できるようにする方法(記事ID:2021)
メニュー設定における入力制御とリンク先レコードの絞り込み仕様
入力画面のメニューに、独自の入力制御ルール(初期値設定・強制登録・動的連動・画面自動処理)を設定する際の手順と挙動について詳しく解説しています。
メニュー設定:レコード一覧タイプ(レコード入力画面に関する設定)(記事ID:1566)
DBリンク項目の基本概要と作成・設定手順
データベース同士を紐付けるリレーション機能であるDBリンク項目の追加手順や、検索方法の仕様(プルダウンとウィンドウの選択ルール)について解説しています。
項目設定:項目タイプ「DBリンク項目」(記事ID:1538)
DBリンク項目の「リンク先レコードの絞込み」とは
リンク先に指定しているDBから、入力・選択をあらかじめ制限する「静的な絞り込み条件(国産商品のみ選択させる、等)」の適用手順をまとめています。
DBリンク項目の「リンク先レコードの絞込み」とは(記事ID:2016)
DBリンク項目に特定の値を初期値としてセットする方法
通常の項目タイプ(数値・文字等)とは異なり、DBリンク項目の初期値を項目設定ではなく、メニューの「入力項目設定」からのみ設定する際の操作フローを解説しています。
DBリンク項目に初期値(固定値)を設定する方法(記事ID:2303)
「参照専用項目」と「従属項目」の2つの使い分けガイド
DBリンク項目で紐付けた先のマスタ項目(顧客名や住所など)を、現在の画面に「コピーして保持(従属項目)」するのか「常に最新マスタをリアルタイム表示(参照専用項目)」するのかの違いを比較解説しています。
もう迷わない!参照専用項目と従属項目の使い分けガイド(記事ID:3033)
(記事ID:2319)
「入力画面設定/レコード入力タイプメニュー」の関連記事一覧
こちらの記事もあわせてご確認ください。
- ログインユーザの所属部署のみを選択肢(DBリンク項目)に動的表示させる「リンク先レコードの絞り込み」設定手順
- 入力制限でロックされている項目にも初期値を反映させるメニュー設定の「強制登録」機能の活用方法と設定手順
- レコード入力画面で「確定」後に自動処理エラーが発生した際に、不完全な状態で登録されたレコードを削除したい
- レコード入力・編集画面の「キャンセル」ボタンの表示位置を変更して誤操作を防ぐことは可能か
- スマートフォン版の入力画面で数値項目に「数値で入力してください」とエラーが出る場合の対処方法
- 特定のユーザ/ユーザグループがレコードを1度編集した後に2回目以降の更新を制限する方法・設定手順
- 入力画面の明細行で空白行の挿入や背景色の変更は可能か
- 入力画面で「一括取得」ボタンを押すと画面が上に戻ってしまう場合の対策
- DBリンク項目の階層式選択(検索プルダウン)で特定の階層のみ初期値を設定することは可能か
- 同じ一覧メニューにおいて、特定項目の入力可否を新規登録時とレコード編集時で切り替えることは可能か