サポート > リポジトリ > 主キーオプション > 任意の書式を設定する(ユーザ定義パターン)

Wagbyが提供する関数を利用して、任意の書式を設定する方法を説明します。

実行例

主キーに次のルールを適用します。

ステータスコード + 年(西暦下二桁)+ 月(ゼロ詰め)+ 連番(ゼロ詰め四桁)
図1 新規顧客のレポート, 主キーが "114041000" となっている

定義方法

「レポート」モデルの全体構成を図2に示します。

図2 レポートモデル

主キー項目「ID」は文字列型で、かつ、順序を用いるとします。 ユーザ定義式に次のように設定します。

図3 主キーの詳細設定
CONCATENATE(
  TOSTR(${status#id}),
  RIGHT(
    PADDING("0",2,YEAR(TODAY())),
    2),
  RIGHT(
    PADDING("0",2,MONTH(TODAY())),
    2),
  SEQ()
)
  • ${status#id}と記述することで、ステータス項目のID値を取得することができます。
  • CONCATENATE 関数は、コンマ区切りで指定された複数の文字列を連結します。
  • CONCATENATE 関数への引数はすべて文字列であるため、TOSTR 関数で数字を文字列に変更することを行っています。
  • RIGHT 関数は、文字列の右からN桁までを取り出します。
  • PADDING 関数は、文字列に指定文字を詰めて、切り出します。
  • YEAR 関数は、日付型の値から「年」の部分を取り出します。
  • MONTH 関数は、日付型の値から「月」の部分を取り出します。
  • TODAY 関数は本日の日付を返します。
  • SEQ() は、この主キー指定部だけで使える特別な関数です。自動採番された値(順序)を意味します。
SEQ()は自動計算式や、初期値で利用することはできません。

「ステータス」モデル(status_m)の初期値を示します。"新規" はコード1を、"既存" はコード2をそれぞれ割り当てます。

図4 ステータスモデルの初期値

実行例

主キーに次のルールを適用します。

固定コード("PJ")+ 年度(西暦四桁)+ 連番(ゼロ詰め六桁)

主キー項目「ID」は文字列型で、かつ、順序を用いるとします。 ユーザ定義式に次のように設定します。

図4 主キーの詳細設定
CONCATENATE("PJ",
 TOSTR(FISCALYEAR(TODAY())),
 RIGHT(
   PADDING("0",6,SEQ()),
   6
 )
)
  • CONCATENATE 関数は、コンマ区切りで指定された複数の文字列を連結します。
  • CONCATENATE 関数への引数はすべて文字列であるため、TOSTR 関数で数字を文字列に変更することを行っています。
  • FISCALYEAR 関数は、年度を返します。
  • PADDING 関数は、文字列に指定文字を詰めて、切り出します。
  • SEQ() は、この主キー指定部だけで使える特別な関数です。自動採番された値(順序)を意味します。