サポート > リポジトリ > 主キーオプション > 複合キーによる枝番

枝番となる項目を複合キーの一部として用意することができます。

動作

「顧客ID」と「枝番」を用意した例を図1に示します。(それぞれが主キーとなっています。) 枝番の初期値は 1 としています。

図1 顧客IDと枝番を用意した例

ここでコピー登録機能を使い、同じ顧客IDで登録してみます。

主キー「顧客ID」は入力する方式となっており、同じ顧客IDを入力したときに枝番が付与されるという動作を実現しています。

登録・更新画面では枝番は自動的に非表示となります。

図2 同じ顧客IDでデータを登録する

枝番が増加します。(図3)

図3 枝番が2になった

枝番は、データ1件毎に管理されています。顧客IDが変われば、枝番は1になります。

図4 異なる顧客IDの例

定義方法

顧客モデルに「顧客ID」と「枝番」項目を用意した例を図5に示します。

図5 顧客モデル

顧客IDは主キーとします。この例では文字列とし、入力できるようにしました。(自動採番のための "順序" は使わないようにしています。)

図6 顧客IDの定義(順序を用いない)

枝番も同じく主キーとしています。かつ「枝番として利用する」を有効にしています。開始番号は1としました。

図7 枝番の定義
この枝番指定は「主キーとして利用する」が有効でないと機能しません。
(枝番を利用するモデルは、必ず複合キーになります。)

動作

主キーに順序を用いる(自動採番)が、コピー登録時は順序を使わない設定と併用することで「コピー登録時のみ(主キーの重複が発生するため)枝番が付与される」という例を説明します。

新規登録画面です。「顧客ID」と「枝番」はいずれも非表示です。

図8 新規登録画面(順序を利用)

新規登録直後の画面です。枝番は "1" となっています。

図9 新規登録直後の詳細画面

次にコピー登録を行ってみます。コピー登録では順序を使わない設定としているため、「顧客ID」は重複することになります。

図10 コピー登録

枝番が増加します。

図11 コピー登録直後の詳細画面

定義方法

顧客IDは順序を用いますが、同時に「コピー登録時は順序を使わない」設定を有効にしています。(図12)

図12 顧客IDの定義(順序を用いる)

枝番の定義は図7と同様です。枝番指定は「主キーとして利用する」を有効とします。

図13 枝番の定義

枝番を 1,2,3,... という整数値ではなく、A,B,C,... というアルファベット表記にする例を示します。 図14は主キー "A-0001" のデータを登録した直後です。ここでは枝番は含まれていません。

図14 主キー "A-0001" のデータを登録した

コピー登録機能を用いて、同じ主キーでデータを再登録してみます。(図15)

図15 同じ主キー "A-0001" でデータを再登録する

キーの末尾に "A" が付与されました。これが枝番です。

図16 枝番 "A" が付与された

再び同じ主キー "A-0001" で登録すると、今度は枝番 "B" が付与されます。 以降、枝番は A,B,C,...Z と付与され、Z の次は AA となります。

図17 枝番 "B" が付与された

定義方法

3つの項目「顧客ID」「枝番(隠し)」「顧客ID」を用意します。最初の「顧客ID」は登録・更新画面で表示されます。もう一つの「顧客ID」は表示用で、計算式によって枝番を末尾に結合した形で表示させるようにします。

図18 モデル定義

各項目の詳細な設定は次のとおりです。

項目名 項目ID 主キー 枝番 順序 開始番号 DB保存 入力時隠し 出力時隠し
顧客ID customerid 文字列 - - - -
枝番(隠し) branchid 数値 - 1
顧客ID customeridshow 文字列 - - - - - -

表示時に用いる「顧客ID」(customeridshow) 項目には、次の自動計算式を適用します。

CONCATENATE(${customerid},A1FORMAT(${branchid}-1))

関数A1FORMATは、Excelの列の命名規則に準拠したアルファベットを返します。

図19 表示時の式の設定

Wagbyは一部の機能で複合キーモデルを利用できないことがあります。
この制約を回避するために「単一キーで絞込機能を応用した枝番」を設定することもできます。

Wagby Developer Day 2017