0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ローコードのSKE】自動採番のさまざま

Posted at

今回の記事は、SKEで自動採番機能のサンプルです。

1、連番型の自動採番

連番型項目は、データ挿入時値が設定されなかったら自動的に増加する数字項目です。PKとしてよく利用されます。以下のテーブルを利用して、サンプルを作ります。

CREATE TABLE "テストテーブル"
(
  "主キー" serial NOT NULL,
  "名称" character varying(10),
  CONSTRAINT "テストテーブル_pkey" PRIMARY KEY ("主キー")
)

共通設定

テーブル名と項目名を登録します。PK項目は役割に「主キー」と設定します。
image.png

一覧画面

今回は入力ダイアログで試したいですから、以下のように、一覧画面に入力ダイアログ利用することを設定します。
image.png
一覧画面の表示項目を設定します。
image.png

入力ダイアログ

入力ダイアログには、主キー項目を設定しないようにします。主キー項目を設定されたら、保存時画面の値をDBに代入するので、自動的に増加する効果がなくなります。
image.png

その他設定

メニュー定義とロール定義を設定して、テストできるようにします。このあたりはプロトタイプ作成をご参考ください。

効果

名称を入力します。
image.png
保存したら主キーが自動採番されます。
image.png
但し、新規保存後編集モードで継続することはできません。保存時採番した主キーを入力ダイアログ側が知らないからです。

2、初期表示時シーケンスの自動採番

連番型をやめて、シーケンスと数字項目で代替ります。

CREATE SEQUENCE "主キー用シーケンス"
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;
  
CREATE TABLE "テストテーブル"
(
  "主キー" integer NOT NULL,
  "名称" character varying(10),
  CONSTRAINT "テストテーブル_pkey" PRIMARY KEY ("主キー")

共通設定、一覧画面

「連番型で自動採番」と同じ

入力ダイアログ

主キー項目を追加します。編集不可にします。フォーマットに「0」を設定して画面から受け取るテキストを数字に変更して、データ型の整合性を保つためです。値のアドオンを登録します。
image.png
新規モードとコピー新規モードの場合、画面初期表示時、シーケンス採番の値を表示します。

{
	"add": function(initFormData,dbData,result){
			return db.select("select nextval('主キー用シーケンス')").getValue("nextval");
		},
	"copyAdd": function(initFormData,dbData,result){
			return db.select("select nextval('主キー用シーケンス')").getValue("nextval");
		}
}

効果

新規モードで入力ダイアログを開く際、主キー項目に初期値が設定されます。
image.png
名称を入力して保存して、そのまま継続できます。
image.png
但し、新規モードで入力ダイアログを開いて保存しないまま閉じて、もう一回開く場合、シーケンスを再採番されて飛び番現象が出ます。

3、保存時シーケンスの自動採番

「初期表示時シーケンスの自動採番」のシーケンスとテーブルはそのまま利用します。

共通設定

基本的に「連番型で自動採番」の設定内容と同じですが、以下のように主キー項目の新規とコピー新規モードの設定値アドオンを登録します。
image.png

{
	"add": function(saveFormData){
			var id=db.select("select nextval('主キー用シーケンス')").getValue("nextval");
			saveFormData.fd主キー=id;
			return id;
		},
	"copyAdd": function(saveFormData){
			var id=db.select("select nextval('主キー用シーケンス')").getValue("nextval");
			saveFormData.fd主キー=id;
			return id;
		}
}

一覧画面

「連番型で自動採番」と同じ

入力ダイアログ

アドオンプログラムの可読性のため、主キー項目のIDを設定します。主キー項目の値は新規モードとコピー新規モードの場合空白を設定します。
image.png

効果

新規モードで入力ダイアログを開いて、主キー項目は空白です。名称を入力して保存ボタンを押します。
image.png
保存後、主キー項目に値が表示されます。
image.png

まとめ

今回の記事のサンプルには、以下のアドオンを利用しました。

  • 値のアドオン
  • モード別項目設定値のアドオン
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?