「楽楽販売」のレコード入力画面で、「(同じ画面の)他の項目で選んだ内容に応じて、DBリンク項目の選択肢を動的に絞り込みたい」というお問い合わせをよくいただきます。
よくある活用例
この操作は、メニュー設定の「リンク先レコードの絞込み」機能や
DBリンクの「検索プルダウン」を利用することで実現可能です。
DBリンク項目を絞り込んで表示する方法
DBリンク項目で表示される選択肢(リンク先のレコード)は、デフォルトではリンク先の全レコードが表示されますが、設定によって表示を絞り込むことが可能です。
絞込みの方法には、主に以下の2通りがあります。
1. あらかじめ作成した絞込み条件を適用する
リンク先のDBにて作成済みの絞込み条件(例:「有効なレコードのみ」など)を、DBリンク項目に固定で適用する方法です。
詳細な設定方法につきましては、下記記事をご参照ください。
DBリンク項目の入力時に選択できるレコードをあらかじめ絞り込む方法
2. 入力値に応じて動的に絞込み条件を変更させる
こちらが、今回のご質問に該当する方法です。
レコード入力画面の他の項目の入力値(例:「顧客ID」項目で選択された値)を利用して、DBリンクの選択肢を動的に絞り込む(=連動させる)設定です。
設定箇所については、下記記事をご参照ください。
メニュー設定:レコード一覧タイプ(レコード入力画面に関する設定)
詳細は以下にご説明します。
入力内容や選択肢に応じてDBリンク項目を連動・絞り込む2つのアプローチ
「楽楽販売」において、「1つの項目(例:顧客や種別)を選択したら、それに連動して別の項目(例:請求書や区分)の選択肢を動的に制限・絞り込みたい」という要件を実現するには、仕様・設定手法や運用目的に応じて以下2つの強力なアプローチ(解決策)があります。
| 実装手法 |
仕組みと概要 |
代表的なユースケース |
アプローチ1:リンク先レコードの絞込み (メニューの入力項目設定) |
同じ入力画面上の別の項目(例:顧客ID)の入力値とリアルタイムに連動させて、DBリンク項目の選択候補(虫眼鏡やプルダウン)を絞り込みます。 |
伝票入力などで、「先に特定の顧客を選択し、その顧客に紐づく過去の請求書や契約のみを選択肢(候補)として提示させたい」場合。 |
アプローチ2:階層式(連動型)プルダウン (DBリンク項目設定+マスタDB) |
選択肢を管理する「マスタDB」を作成し、登録方法「検索プルダウン」で分類階層(分類1〜3)を定義して段階的に連動させて選ばせます。 |
マスタやレコード入力において、「発注種別(大分類)を選ぶと、発注区分(小分類)のプルダウンがその種別内のものだけに自動連動して切り替わる」階層入力を実現したい場合。 |
標準の「選択肢(1件選択)」タイプ項目同士では、このような他項目と連動した動的な出し分け・制御は行えません。要件に合わせて、以下の具体的な設定手順を使い分けてください。
各アプローチの具体的な設定・操作手順
アプローチ1:メニュー設定の「リンク先レコードの絞込み」を活用した動的連動手順
例として、「顧客DB」の入力画面において、選択した「顧客ID」に連動して「請求書No(請求書DBへのDBリンク項目)」の選択候補をリアルタイムに絞り込む手順です。
【設定箇所】 左パネル > [対象DBのスパナマーク] > 基本設定 > メニュー設定 > 対象メニューの「設定」ボタン ➔ 「入力項目設定」
- 設定を行いたいデータベースの右端にある「スパナアイコン(DB設定)」 ➔ 「メニュー設定」を開きます。
- 対象となるメニュー(「レコード入力タイプ」等)の右端にある「設定」ボタンをクリックし、最下部「レコード入力画面に関する設定」にある「入力項目設定」の「設定」を開きます。
- 「項目」プルダウンから、絞り込みを適用したい「DBリンク項目(例:請求書No)」を選択し、「追加」ボタンをクリックします。
- 追加された項目の詳細設定パネルにある「リンク先レコードの絞込み」の「+追加」 ➔ 「DB項目の入力内容による絞込み条件の設定」を選択します。
- 以下の条件設定(左辺・演算子・右辺)の組み合わせを指定して「確定」をクリックし、メニュー設定全体も保存します。
- 左辺(リンク先の請求書DBの項目): 顧客ID
- 演算子: 「と等しい」
- 右辺(現在の自DB側の項目): 顧客ID
※この設定は、入力画面でトリガーとなる項目(例:顧客ID)に値が入った状態で、対象のDBリンク項目の虫眼鏡マークを押す(またはプルダウンを開く)ことで機能します。先にトリガー項目を入力する運用ルールと併せてご利用ください。
アプローチ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. 【アプローチ1制限】右辺の条件として使用できない「4つの項目タイプ」
メニューの入力項目設定による動的絞り込み条件の「右辺(現在の入力中DB側の項目)」として、以下のデータ項目を指定することはできません。これらをトリガーにして連動させたい場合は、テキスト(1行)等に一度値を変換して持たせるなどの設計変更が必要です。
- 「数値計算」タイプ項目
- 「日時と日時の計算」タイプ項目
- 「日時と時間量の計算」タイプ項目
- 「従属項目」タイプ項目
※また、DBリンクを設定している「従属項目のDBリンク項目」自体に対しても、動的絞り込み条件(リンク先レコードの絞込み)を追加することはできません。
※注意:条件の右辺(連動元)に指定されている項目の「項目タイプ変更」を実施した場合、システム内の整合性を保つため、その項目を使用しているすべての「リンク先レコードの絞込み」設定が自動的に消去・クリアされます。タイプ変更時は、再度メニュー設定の再指定が必要になりますのでご注意ください。
2. 【アプローチ1仕様】既存レコード編集・保存時における整合性チェックのタイミング
「新規登録」の際には、絞り込み条件に合致しない誤った値を登録しようとすると「許可されていない値です」とエラーで確実に弾かれます。
しかし、すでにDB上に保存されている既存レコードを「編集(更新)」して保存した際、以下のいずれの変更も行われていない場合は、例外的にエラーを発生させずにそのまま保存が完了する仕様となっています。
- 対象のDBリンク項目(例:請求書No)の選択値が、画面表示時から変更されていない場合
- 絞り込み条件の右辺に使っている項目(例:顧客ID)の入力値が、画面表示時から変更されていない場合
【この仕様の理由】
これは、マスタ側の状態変更(例:マスタ側でその請求書がのちに削除された等)やログインユーザー・日付といった動的な条件によって、「過去に登録した正常な既存レコードの、別の項目(メモ欄など)を一部編集したいだけなのに、過去の連動条件のミスマッチが原因でレコード保存が一切できなくなってしまう」という、管理者の運用利便性と過去データの整合性を損なうことを避けるために考慮された、製品本来の挙動(仕様)です。
DBリンク項目、またはその連動元項目の値に「明示的な変更」が加えられたタイミングで初めて、整合性チェックが走り、違反データの保存をロックする設計になっています。
3. 【アプローチ2制限】検索プルダウンでの最大表示件数の制限(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)