サポート > リポジトリ > 他モデルの参照 > 選択肢モデル
ja | en

選択肢モデルとは、数個から数十個の選択肢を管理するために用います。

選択肢モデルは、モデル項目として「主キー」「内容」「表示優先度」「有効期限」という項目が予め定義済みとなっています。 開発者はこのモデル定義を雛形(テンプレート)として、選択肢の内容を格納するために用いることができます。

項目名(日本語) 項目名(英語) 項目の型 役割
主キー id 数値
文字列
日付・時刻
主キー
内容 content 文字列 画面に表示される文言
表示優先度 priority 数値 リストボックス等の並び順
有効期限 valid 文字列 何か値がセットされていた場合には無効扱いとなる

通常、これらの選択肢はリストボックスラジオボタンチェックボックスのいずれかの方式で利用します。

「業種」を格納するための選択肢モデルを用意する例を示します。

図1 選択肢モデルを作成する
「選択肢モデル」「選択肢モデル(初期データ固定)」のいずれかを用います。「選択肢モデル(初期データ固定)」の場合、運用中に選択肢を変更することはできません。男女フラグなど、変更する予定のない場合にご利用ください。[詳細...]

選択肢モデルは標準で4つの項目「主キー」「内容」「表示優先度」「有効期限」が予め定義済みとなっています。
(これらの項目の名前およびIDは変更できません。型は主キーのみ変更できます。)

図2 選択肢モデルの標準形

ここではモデル名を"業種"とし、モデルIDを"jobtype_m"と設定します。
("_m"は、このモデルが選択肢であるという意味を含めましたが、必ずしもこのような名前にすることはありません。)

図3 モデル名とモデルIDの設定

主キーのみ型を変更できます。「文字列」「数値」「日付・時刻」から選択できます。標準は数値です。

図4 型の指定

選択肢モデルは特別に、初期値を設定することができます。「初期データ」タブを押下すると図5の入力画面が開きます。

図5 選択肢の初期値を設定する

「追加」ボタンを押下することで、複数個の初期値を設定できます。左欄の「No.」は固定(連番)ですが、これは表示のためだけに用いられるもので、データベースには格納されません。「ID」が主キーとなります。

図6 「内容」項目の初期値を設定する
運用を開始したあとでも、選択肢の値を追加・変更することができます。詳細は「運用中に選択肢を追加する」にて説明します。

顧客モデルに、先ほど追加した業種を参照する例を説明します。

項目名を"業種"とします。項目IDを"job"とします。型は"他モデルの項目参照"を指定します。

図7 業種モデル項目の情報を設定

型に「他モデルの項目参照」を選択すると、図87「モデル項目の型詳細設定」ダイアログが表示されます。

図8 モデル項目の型詳細設定

参照先モデルとして、図2で用意した「業種」モデルを選択します。

図9 参照先モデルの指定

入力タイプを「リストボックス」と指定します。また参照先モデル項目は、「内容」を指定します。

図10 入力タイプと参照先モデル項目の指定

さらにオプションを設定します。表示優先度項目には選択肢モデル側に用意された「表示優先度」を、無効判定項目には「有効期限」を、それぞれ紐付けます。

図11 表示優先度項目と無効判定項目の指定
標準では、選択肢モデルを参照する項目では「表示優先度」と「有効期限」が自動的にセットされます。

リストボックスを用いた参照

ビルドしたアプリケーションを確認します。「業種」項目がリストボックスで表示されています。また初期データが読み込まれていることがわかります。(図12)

図12 リストボックスによる表示

選択肢の中に "(未選択)" が自動的に加わっています。これはいずれも選択しない状態を意図しています。この "(未選択)" を除去することもできます。[詳細...]

ラジオボタンを用いた参照

ラジオボタンを使った例を図13に示します。

図13 ラジオボタンによる表示

ラジオボタン利用時は、一度何かを選択すると、全解除(一つも選択しない状態)することができません。 そのため、図14に示す消しゴムアイコンが用意されています。このアイコンを押下すると全ての選択を解除することができます。

図14 消しゴム機能

チェックボックスを用いた参照

チェックボックスを使った例を図15に示します。

図15 チェックボックスによる表示

すべての選択肢を一括して選択状態にすることができます。図16に示す全チェックアイコンを押下します。

図16 全チェックアイコン

チェック後は、アイコンの形が消しゴムに変わります。(図17)

図17 アイコンの形が消しゴムに変わった

消しゴム機能を使うことで、すべての選択を一度に解除することができます。

図18 アイコンの上にマウスをのせると説明がポップアップで表示される

選択肢の値は、運用中に追加することができます。
業種モデルの検索画面を選択します。一覧更新ボタンを押下します。

図19 業種モデルの検索画面

一覧更新画面では、データの編集や新規登録を行うことができます。

図20 業種モデルの一覧更新画面

任意の行の「新規」ボタンを押下すると、最下行に入力欄が用意されます。ここで新しい選択肢を入力し、画面上部の「保存」ボタンを押下します。

図21 業種データを一件追加する

再び顧客モデルの新規登録画面を開きます。業種の選択肢が追加されていることがわかります。

図22 業種の選択肢が追加された

運用中に、選択肢の表示順を変えることができます。

再び業種の一覧更新画面を開きます。「表示優先度」の欄に、数字を設定します。この数字の大きい順に並び替えが行われます。

図23 表示優先度を設定する

顧客データの新規登録画面を開くと、指定した並び順で選択肢が表示されていることを確認できます。

図24 表示優先度によって選択肢が並び替えられる

表示順を変更する

標準は「降順(数字の大きい順)」ですが、これを「昇順(数字の小さい順)」ルールに変えることもできます。
(昇順は "1,2,3,..." であり、降順は "10,9,8,..." という意味です。)

図25 表示順の設定

ソートルールの詳細

表示優先度
「表示優先度項目」に指定した項目を指定します。型は整数型となっている必要があります。
ID
選択肢モデルの主キー値によってソートされます。「表示優先度項目」は用いられません。
内容
選択肢モデルの内容によってソートされます。文字列型の場合は辞書順になります。「表示優先度項目」は用いられません。
参照先モデルの固定ソートキー
(選択肢モデルでは設定できません。)

Wagby では選択肢のデータを削除することができないようになっています。選択肢はさまざまなモデルから参照されるという性質をもっているため、削除してしまうと参照先データが存在しないという不整合が発生するためです。その代わり、選択肢を無効にすることができます。ここでは、その方法を説明します。

運用中に、選択肢を無効にしてみます。 再び業種の一覧更新画面を開きます。「有効期限」の欄に、任意の文字を設定します。ここに文字が含まれていた場合、データは無効になります。

図26 データの有効期限を設定する

有効期限を設定された選択肢を参照している顧客データを確認してみます。図27 のように、選択肢データの横に「(-)」というマークが表示されています。これは「現在は無効となっている(古い)選択肢データを参照している」ことを意味します。

図27 無効な選択肢を参照しているデータの表示

この顧客データを更新してみます。業種の欄には、現在の無効データを含めた、選択可能なリストが表示されます。

図28 現在利用可能な選択肢の一覧

新しい業種を選択します。

図29 新しい業種を選択する

再び、同データの更新を行ってみます。すると、無効となった業種のデータは、もはや選択肢欄には表示されないことがわかります。

図30 無効なデータは選択できない

Wagby ではこのように、運用しながら緩やかに無効なデータを(有効なデータに)置き換えることができます。

この動作はリストボックスラジオボタンチェックボックスのいずれにも対応しています。「検索画面」方式では利用できません。

有効期限に日付範囲をする

有効期限には任意の文字列を指定できますが、日付を表す書式 (yyyy/MM/dd) の場合は特別の意味を持ちます。

有効期限の設定値 判定
2016/1/1-2016/12/31 2016/1/1 から 2016/12/31 まで有効。
例:本日が 2016/7/1 の場合は有効。本日が 2017/1/1 の場合は無効となる。
-2016/12/31 2016/12/31 まで有効。
例:本日が 2016/7/1 の場合は有効。本日が 2017/1/1 の場合は無効となる。
2016/1/1- 2016/1/1 から有効。
例:本日が 2016/7/1 の場合は有効。本日が 2015/12/31 の場合は無効となる。
2016/12/31 2016/12/31 のみ有効。
例:本日が 2016/12/31 の場合は有効。それ以外の日であれば無効となる。
"無効"という文字列 無効となる。
"有効"または"有効なデータ"という文字列 無効となる。日付以外であれば、文字列がセットされていた時点で無効と判定される。
(空文字) 有効となる。

動作例

無効と設定したデータを検索の対象とする設定を用意しています。図31では、業種モデルの "食品" データを無効としています。

図31 業種データ

この業種モデルを参照している顧客モデルの検索画面で、無効となったデータ "食品" で検索できるようになっています。(図32)

図32 顧客検索画面では、無効データも検索可能となっている

新規登録・更新画面では、無効データは表示されません。(図33)

図33 顧客新規登録画面では無効データは選択できない

定義方法

顧客モデルの業種項目についての詳細定義ダイアログを開きます。検索制御タブ内の「無効判定項目を無視する」を有効にします。

図34 無効判定項目を無視する

選択肢モデルを参照する側(参照元モデル。上記例では「顧客」モデル)の項目では、選択肢モデルのID値を保持します。内容部ではありません。

データベース上のテーブルを確認すると、ID値が格納されていることがわかります。

チェックボックスを用いた場合は複数の選択値(ID)を保持するため、専用のテーブルが作成されます。

選択肢モデルの「初期データで固定とする」を有効にすると、運用中に選択肢を変更することができなくなります。固定値として扱うため、内部ではテーブルを作成せず、メモリ上で管理するようになります。

図35 初期データで固定とする

このモデルには、次のルールが適用されます。

  • テーブルを作成しない。
  • キャッシュを無効とする。(常にメモリ上の値を使うため)
  • 詳細画面、登録画面、更新画面、ダウンロード画面、アップロード更新画面、一覧更新画面は作成されない。(運用中の値の追加・変更・削除は行えない。)
  • 一覧表示画面では、検索条件部は表示されない。常に一覧表示となる。
  • 一覧表示画面の同時表示数の初期値は100となる。最大100個のデータが一画面に表示される。
Designer上の設定は無視されます。強制的に上のルールが適用されます。
本設定は「選択肢モデル」のみで利用できます。(通常のモデルでは利用できません。)

設計上の注意点

この設定を行うと、内部では一切のデータベース操作を無効として扱います。システム稼働中のデータの追加、更新、削除も行えません。検索も検索条件を指定した絞り込みは行えず、常に全件のデータを取得します。

そのため、次の設定と組み合わせることはできません。

  • 外部キー
  • メインモデルまたはサブモデル
  • 全文検索
  • ワークフロー
  • 楽観ロック
  • カレンダビュー、集計ビューをはじめとする各種ビュー
  • 暗黙条件
  • グループ権限
  • この選択肢モデルのIDをキーに、自身のモデルの項目(内容、表示優先度など)を参照連動するような使い方

これらの制約から、本設定は選択肢としての初期データとして扱うのみとしてご利用ください。

運用上の注意点

  • 選択肢モデルに項目を追加することはできません。同様に、用意されている項目を削除することもできません。
  • 「テーブルを作成しない選択肢モデル」をサブデータベースで用意することはできません。