refactor
This commit is contained in:
81
README.md
81
README.md
@@ -1,53 +1,66 @@
|
||||
# Commuter Allowance VBA Project
|
||||
|
||||
Excel VBA commuter allowance calculation tool.
|
||||
Excel VBA 通勤手当計算ツール。
|
||||
|
||||
## Structure
|
||||
|
||||
```
|
||||
vba/
|
||||
├── 通勤手当テンプレート_案.xlsm # Main workbook
|
||||
├── data/ # CSV data files
|
||||
│ ├── 222交通機関名区分.csv # Transport type (222)
|
||||
│ ├── 223通勤_決定事項区分.csv # Decision factors (223)
|
||||
├── 通勤手当テンプレート.xlsm # Main workbook
|
||||
├── data/ # CSV data files
|
||||
│ ├── 222交通機関名区分.csv # Transport type (222)
|
||||
│ ├── 223通勤_決定事項区分.csv # Decision factors (223)
|
||||
│ ├── 224通勤_手当月額の決定区分.csv # Monthly amount (224)
|
||||
│ ├── 507発信者.csv # Sender (507)
|
||||
│ ├── 区間.csv # Route (section)
|
||||
│ └── 区間詳細.csv # Route details
|
||||
└── src/
|
||||
├── module/ # Common modules
|
||||
│ ├── Common_Button.bas (306 lines)
|
||||
│ ├── Common_File_Utils.bas (347 lines)
|
||||
│ ├── Common_Functions.bas (478 lines)
|
||||
│ ├── Common_Global_Cache.bas (817 lines)
|
||||
│ └── Common_Selector.bas (161 lines)
|
||||
├── init_module/ # Init modules
|
||||
│ ├── 507発信者.csv # Sender (507)
|
||||
│ ├── 区間.csv # Route (section)
|
||||
│ └── 区間詳細.csv # Route details
|
||||
└── src/sh/tuk/ # 通勤 (Commuter) modules
|
||||
├── init_module/
|
||||
│ ├── Import_modules.bas
|
||||
│ └── Test_Cache.bas
|
||||
└── sheet/ # Sheet classes
|
||||
├── C1.cls (842 lines) - Tukin_C1: Commuter allowance editing
|
||||
├── M1.cls (164 lines) - Master_Kukan: Route master (import/export/validate)
|
||||
├── M2.cls (386 lines) - Master_Kukan_detail: Route detail master
|
||||
├── O1.cls (5 lines) - Master_address: Address master
|
||||
├── O2.cls (6 lines) - Master_507: Sender master (507)
|
||||
├── T1.cls (57 lines) - Master_244: Route master (244)
|
||||
├── T2.cls (117 lines) - Master_245: Route master (245)
|
||||
├── T3.cls (77 lines) - Master_246
|
||||
├── Z1.cls (67 lines) - Master_222: Transport type master
|
||||
├── Z2.cls (57 lines) - Master_223: Decision factors master
|
||||
├── Z3.cls (60 lines) - Master_224: Monthly amount master
|
||||
└── Z4.cls (64 lines) - Master_225
|
||||
├── module/
|
||||
│ ├── Common_Button.bas (306 lines)
|
||||
│ ├── Common_File_Utils.bas (347 lines)
|
||||
│ ├── Common_Functions.bas (486 lines)
|
||||
│ ├── Common_Global_Cache.bas (586 lines)
|
||||
│ └── Common_Selector.bas (161 lines)
|
||||
└── sheet/
|
||||
├── C1.cls (846 lines) - Tukin_C1: 通勤手当編集
|
||||
├── M1.cls (167 lines) - Master_Kukan: 区間マスタ (import/export/validate)
|
||||
├── M2.cls (400 lines) - Master_Kukan_detail: 区間詳細マスタ
|
||||
├── O1.cls (5 lines) - Master_address: 住所マスタ
|
||||
├── O2.cls (6 lines) - Master_507: 発信者マスタ (507)
|
||||
├── T1.cls (54 lines) - Master_244
|
||||
├── T2.cls (114 lines) - Master_245
|
||||
├── T3.cls (74 lines) - Master_246
|
||||
├── Z1.cls (64 lines) - Master_222: 交通機関マスタ
|
||||
├── Z2.cls (54 lines) - Master_223: 決定事項マスタ
|
||||
├── Z3.cls (57 lines) - Master_224: 手当月額決定区分マスタ
|
||||
└── Z4.cls (61 lines) - Master_225
|
||||
```
|
||||
|
||||
## Sheet Class Prefix
|
||||
|
||||
| Prefix | Description |
|
||||
|--------|-------------|
|
||||
| C | Commuter allowance editing |
|
||||
| M | Menu / Route master |
|
||||
| O | Other masters |
|
||||
| T | Route (通勤区間) |
|
||||
| Z | Master data configuration |
|
||||
| C | 通勤手当編集 (Commuter allowance editing) |
|
||||
| M | メニュー/区間マスタ (Menu / Route master) |
|
||||
| O | その他マスタ (Other masters) |
|
||||
| T | 通勤区間 (Route) |
|
||||
| Z | マスタデータ設定 (Master data configuration) |
|
||||
|
||||
## キャッシュ構造
|
||||
|
||||
| Cache | Sheet | Key → Value |
|
||||
|-------|-------|-------------|
|
||||
| m1Cache | M1 | 区間コード(C) → 交通機関区分(D)、交通機関名称(E)、利用区間発名(F)、利用区間着名(G)、券種(I)、運賃(L) |
|
||||
| m1KukanDCache | M1 | { 交通機関区分(D): { 利用区間発名(F): [利用区間着名(G)] } } |
|
||||
| m2Cache | M2 | { 区間コード(C): { 券種(I): { コード(J): 1箇月運賃(K) } } } |
|
||||
| z1Cache | (222)交通機関マスタ | 区分(C) → 交通機関名称(D) |
|
||||
| z2Cache | (223)通勤_決定事項区分一覧 | 区分(C) → 決定事項(D) |
|
||||
| z3Cache | (224)通勤_手当月額の決定区分一覧 | 区分(C) → 手当月額の決定(D) |
|
||||
| o1Cache | 住所情報 | { 職員番号(C): { 住所1(E): [住所2(F)] } } |
|
||||
| o2Cache | (507)発信者一覧 | 区分(C) → 官職名称(D) |
|
||||
|
||||
## License
|
||||
|
||||
|
||||
44
sql/sh_csv_item_definition_meta.sql
Normal file
44
sql/sh_csv_item_definition_meta.sql
Normal file
@@ -0,0 +1,44 @@
|
||||
CREATE TABLE IF NOT EXISTS sh_csv_item_definition (
|
||||
code VARCHAR(10) NOT NULL,
|
||||
item_seq int NOT NULL,
|
||||
item_title VARCHAR(50) NOT NULL,
|
||||
item_name VARCHAR(20),
|
||||
is_duplicate_check_key BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
data_type VARCHAR(16) NOT NULL,
|
||||
precision INT,
|
||||
scale INT,
|
||||
nullable BOOLEAN NOT NULL DEFAULT TRUE,
|
||||
enable_format_check BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
format_regex VARCHAR(100),
|
||||
enable_exist_check BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
allowed_values TEXT[],
|
||||
master_sybt VARCHAR(40),
|
||||
enable_relation_check BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
json_ignore BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
cmnuser VARCHAR(10),
|
||||
dmndate TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT uk_process_title
|
||||
UNIQUE (code, item_title),
|
||||
|
||||
CONSTRAINT uk_process_seq
|
||||
UNIQUE (code, item_seq)
|
||||
);
|
||||
|
||||
COMMENT ON COLUMN sh_csv_item_definition.code IS '処理コード';
|
||||
COMMENT ON COLUMN sh_csv_item_definition.item_seq IS '項目順';
|
||||
COMMENT ON COLUMN sh_csv_item_definition.item_title IS '項目タイトル';
|
||||
COMMENT ON COLUMN sh_csv_item_definition.item_name IS '項目名称';
|
||||
COMMENT ON COLUMN sh_csv_item_definition.is_duplicate_check_key IS '重複チェックキー';
|
||||
COMMENT ON COLUMN sh_csv_item_definition.data_type IS 'データ型';
|
||||
COMMENT ON COLUMN sh_csv_item_definition.precision IS '数値精度';
|
||||
COMMENT ON COLUMN sh_csv_item_definition.scale IS '小数桁数';
|
||||
COMMENT ON COLUMN sh_csv_item_definition.nullable IS 'NULL 許容フラグ';
|
||||
COMMENT ON COLUMN sh_csv_item_definition.enable_format_check IS '書式チェック有効フラグ';
|
||||
COMMENT ON COLUMN sh_csv_item_definition.format_regex IS '書式正規表現';
|
||||
COMMENT ON COLUMN sh_csv_item_definition.enable_exist_check IS '存在チェック有効フラグ';
|
||||
COMMENT ON COLUMN sh_csv_item_definition.allowed_values IS '許可値';
|
||||
COMMENT ON COLUMN sh_csv_item_definition.master_sybt IS 'マスタ種別';
|
||||
COMMENT ON COLUMN sh_csv_item_definition.enable_relation_check IS '相関チェック有効フラグ';
|
||||
COMMENT ON COLUMN sh_csv_item_definition.json_ignore IS 'JSON_IGNOREフラグ';
|
||||
|
||||
41
sql/tuk_csv_item_definition.sql
Normal file
41
sql/tuk_csv_item_definition.sql
Normal file
@@ -0,0 +1,41 @@
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 1, '職員番号', 'CSHAINNO', TRUE, 'CHAR', 8, NULL, FALSE, FALSE, '', TRUE, NULL, '', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 2, '事実発生年月日', 'DJJ_HA_DTE', TRUE, 'DATE', NULL, NULL, FALSE, TRUE, '', FALSE, NULL, '', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 3, '提出年月日', 'DTEISHUTU_DTE', FALSE, 'DATE', NULL, NULL, FALSE, TRUE, '', FALSE, NULL, '', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 4, '受理年月日', 'DJURI_DTE', FALSE, 'DATE', NULL, NULL, FALSE, TRUE, '', FALSE, NULL, '', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 5, '届出の事由コード', 'TUKIN_TODOKE_CDE', TRUE, 'MASTER', 2, NULL, FALSE, FALSE, '', TRUE, NULL, '220', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 6, '届出の備考', 'TODOKE_BIKO_NME', FALSE, 'VARCHAR', 40, NULL, TRUE, TRUE, '', FALSE, NULL, '', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 7, '住所1', 'ADRESS1_NME', FALSE, 'VARCHAR', 60, NULL, TRUE, TRUE, '', FALSE, NULL, '', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 8, '住所2', 'ADRESS2_NME', FALSE, 'VARCHAR', 40, NULL, TRUE, TRUE, '', FALSE, NULL, '', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 9, '運賃改正・法改正年月日', 'DKAISEI_DTE', FALSE, 'DATE', NULL, NULL, TRUE, TRUE, '', FALSE, NULL, '', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 10, '出勤予定日数', 'SYUKIN_DATE_NUM', FALSE, 'NUMBER', 2, NULL, FALSE, TRUE, '', FALSE, NULL, '', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 11, '往復区分', 'OUFUKU_KBN', FALSE, 'ENUM', 1, NULL, FALSE, FALSE, '', TRUE, '{1,2}', '', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 12, '交替制', 'KOTAISEI_CDE', FALSE, 'ENUM', 1, NULL, FALSE, FALSE, '', TRUE, '{0,1}', '', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 13, '算出式', 'SANSYUTU_SIKI', FALSE, 'VARCHAR', 80, NULL, TRUE, TRUE, '', FALSE, NULL, '', TRUE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 14, '自動車等使用距離', 'CAR_NUM', FALSE, 'NUMBER', 4, 1, TRUE, TRUE, '', FALSE, NULL, '', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 15, '自動車等支給額', 'CAR_SHIKYU_NUM', FALSE, 'NUMBER', 6, NULL, TRUE, TRUE, '', FALSE, NULL, '', TRUE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 16, '自動車等駐車場代', '', FALSE, 'NUMBER', 6, NULL, TRUE, TRUE, '', FALSE, NULL, '', TRUE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 17, '区間1区間コード', 'KUKAN', FALSE, 'NUMBER', 5, NULL, TRUE, FALSE, '', TRUE, NULL, '', TRUE, TRUE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 18, '区間1券種', 'KENSHU_1', FALSE, 'ENUM', 1, NULL, TRUE, FALSE, '', TRUE, '{0,1,2,3}', '', TRUE, TRUE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 19, '区間1コード', 'KAN_CDE', FALSE, 'CHAR', 3, NULL, TRUE, TRUE, '', FALSE, NULL, '', TRUE, TRUE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 20, '区間1支給開始年月', 'KUKAN', FALSE, 'DATE', NULL, NULL, TRUE, TRUE, '', FALSE, NULL, '', TRUE, TRUE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 21, '区間2区間コード', 'KUKAN', FALSE, 'NUMBER', 5, NULL, TRUE, FALSE, '', TRUE, NULL, '', TRUE, TRUE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 22, '区間2券種', 'KENSHU_2', FALSE, 'ENUM', 1, NULL, TRUE, FALSE, '', TRUE, '{0,1,2,3}', '', TRUE, TRUE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 23, '区間2コード', 'KAN_CDE', FALSE, 'CHAR', 3, NULL, TRUE, TRUE, '', FALSE, NULL, '', TRUE, TRUE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 24, '区間2支給開始年月', 'KUKAN', FALSE, 'DATE', NULL, NULL, TRUE, TRUE, '', FALSE, NULL, '', TRUE, TRUE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 25, '区間3区間コード', 'KUKAN', FALSE, 'NUMBER', 5, NULL, TRUE, FALSE, '', TRUE, NULL, '', TRUE, TRUE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 26, '区間3券種', 'KENSHU_3', FALSE, 'ENUM', 1, NULL, TRUE, FALSE, '', TRUE, '{0,1,2,3}', '', TRUE, TRUE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 27, '区間3コード', 'KAN_CDE', FALSE, 'CHAR', 3, NULL, TRUE, TRUE, '', FALSE, NULL, '', TRUE, TRUE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 28, '区間3支給開始年月', 'KUKAN', FALSE, 'DATE', NULL, NULL, TRUE, TRUE, '', FALSE, NULL, '', TRUE, TRUE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 29, '区間4区間コード', 'KUKAN', FALSE, 'NUMBER', 5, NULL, TRUE, FALSE, '', TRUE, NULL, '', TRUE, TRUE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 30, '区間4券種', 'KENSHU_4', FALSE, 'ENUM', 1, NULL, TRUE, FALSE, '', TRUE, '{0,1,2,3}', '', TRUE, TRUE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 31, '区間4コード', 'KAN_CDE', FALSE, 'CHAR', 3, NULL, TRUE, TRUE, '', FALSE, NULL, '', TRUE, TRUE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 32, '区間4支給開始年月', 'KUKAN', FALSE, 'DATE', NULL, NULL, TRUE, TRUE, '', FALSE, NULL, '', TRUE, TRUE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 33, '決定事項区分コード', 'KETTEI_CDE', FALSE, 'MASTER', 1, NULL, TRUE, FALSE, '', TRUE, NULL, '223', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 34, '非該当の理由', 'HIGAITO_NME', FALSE, 'VARCHAR', 80, NULL, TRUE, TRUE, '', FALSE, NULL, '', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 35, '非該当者認定簿出力区分', 'HIGAITO_KBN', FALSE, 'ENUM', 1, NULL, FALSE, FALSE, '', TRUE, '{1,2}', '', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 36, '手当月額の決定区分コード', 'GETSUGAKU_CDE', FALSE, 'MASTER', 2, NULL, TRUE, FALSE, '', TRUE, NULL, '224', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 37, '支給の始期', 'DNINTEI_DTE', FALSE, 'DATE', NULL, NULL, TRUE, TRUE, '', FALSE, NULL, '', TRUE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 38, '備考', 'TSUKIN_BIKO_NME', FALSE, 'VARCHAR', 80, NULL, TRUE, TRUE, '', FALSE, NULL, '', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 39, '所属コード', 'SZK_CDE', FALSE, 'VARCHAR', 10, NULL, TRUE, TRUE, '', FALSE, NULL, '', FALSE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 40, '認定年月日', 'DNINTEI_DTE', FALSE, 'DATE', NULL, NULL, TRUE, TRUE, '', FALSE, NULL, '', TRUE, FALSE, 'updsv7');
|
||||
INSERT INTO sh_csv_item_definition (code, item_seq, item_title, item_name, is_duplicate_check_key, data_type, precision, scale, nullable, enable_format_check, format_regex, enable_exist_check, allowed_values, master_sybt, enable_relation_check, json_ignore, cmnuser) VALUES ('TUK', 41, '(各庁の長)官職コード', 'KANSHOKU_CDE', FALSE, 'MASTER', 3, NULL, TRUE, FALSE, '', TRUE, NULL, '507', TRUE, FALSE, 'updsv7');
|
||||
292
src/sh/juk/sheet/J1.cls
Normal file
292
src/sh/juk/sheet/J1.cls
Normal file
@@ -0,0 +1,292 @@
|
||||
' ============================================================
|
||||
' JUK CSV Item Definition Generator
|
||||
'
|
||||
' Description:
|
||||
' Excel の CSV 項目定義シートから sh_csv_item_definition テーブル用の
|
||||
' DML INSERT 文を生成する
|
||||
'
|
||||
' Usage:
|
||||
' 1. 「CSV項目定義」シートを開く
|
||||
' 2. VBAエディタで J1.cls をインポート
|
||||
' 3. GenerateJukCsvItemDefinition マクロを実行
|
||||
' 4. 同じフォルダに juk_csv_item_definition.sql が生成される
|
||||
'
|
||||
' Column Mapping:
|
||||
' C - 順序号 (item_seq)
|
||||
' D - 項目名 (item_title)
|
||||
' P - データ型 (data_type)
|
||||
' V - PK (is_duplicate_check_key)
|
||||
' W - 必须入力 (nullable) - 反転
|
||||
' X - 定義チェック (enable_format_check)
|
||||
' Y - 存在チェック (enable_exist_check)
|
||||
' Z - 関連チェック (enable_relation_check)
|
||||
' AA -許可値 (allowed_values)
|
||||
' BI - JsonIgnore (json_ignore)
|
||||
'
|
||||
' Output Sample:
|
||||
' INSERT INTO sh_csv_item_definition (CODE, ITEM_SEQ, ITEM_TITLE, ITEM_NAME, IS_DUPLICATE_CHECK_KEY, DATA_TYPE, PRECISION, SCALE, NULLABLE, ENABLE_FORMAT_CHECK, FORMAT_REGEX, ENABLE_EXIST_CHECK, ALLOWED_VALUES, MASTER_SYBT, ENABLE_RELATION_CHECK, JSON_IGNORE, CMNUSER) VALUES ('JUK', 1, '職員番号', '', TRUE, 'CHAR', 8, NULL, FALSE, FALSE, '', TRUE, NULL, '', FALSE, FALSE, 'updsv7');
|
||||
' ============================================================
|
||||
|
||||
Option Explicit
|
||||
|
||||
' --- 設定 ---
|
||||
Private Const TARGET_SHEET_NAME As String = "CSV項目定義"
|
||||
Private Const OUTPUT_FILE_NAME As String = "juk_csv_item_definition.sql"
|
||||
Private Const DATA_START_ROW As Long = 9
|
||||
Private Const CODE_PREFIX As String = "JUK"
|
||||
Private Const DEFAULT_CMNUSER As String = "updsv7"
|
||||
|
||||
' --- カラム位置 (Excel 列番号) ---
|
||||
Private Const COL_ITEM_SEQ As Long = 3
|
||||
Private Const COL_ITEM_TITLE As Long = 4
|
||||
Private Const COL_DATA_TYPE As Long = 16
|
||||
Private Const COL_PK As Long = 22
|
||||
Private Const COL_REQUIRED As Long = 23
|
||||
Private Const COL_FORMAT_CHECK As Long = 24
|
||||
Private Const COL_EXIST_CHECK As Long = 25
|
||||
Private Const COL_RELATION_CHECK As Long = 26
|
||||
Private Const COL_ALLOWED_VALUES As Long = 27
|
||||
Private Const COL_JSON_IGNORE As Long = 61
|
||||
|
||||
' --- フィールド名 (DDLフィールド名→大写) ---
|
||||
Private Const CODE = "CODE"
|
||||
Private Const ITEM_SEQ = "ITEM_SEQ"
|
||||
Private Const ITEM_TITLE = "ITEM_TITLE"
|
||||
Private Const ITEM_NAME = "ITEM_NAME"
|
||||
Private Const IS_DUPLICATE_CHECK_KEY = "IS_DUPLICATE_CHECK_KEY"
|
||||
Private Const DATA_TYPE = "DATA_TYPE"
|
||||
Private Const PRECISION = "PRECISION"
|
||||
Private Const SCALE = "SCALE"
|
||||
Private Const NULLABLE = "NULLABLE"
|
||||
Private Const ENABLE_FORMAT_CHECK = "ENABLE_FORMAT_CHECK"
|
||||
Private Const FORMAT_REGEX = "FORMAT_REGEX"
|
||||
Private Const ENABLE_EXIST_CHECK = "ENABLE_EXIST_CHECK"
|
||||
Private Const ALLOWED_VALUES = "ALLOWED_VALUES"
|
||||
Private Const MASTER_SYBT = "MASTER_SYBT"
|
||||
Private Const ENABLE_RELATION_CHECK = "ENABLE_RELATION_CHECK"
|
||||
Private Const JSON_IGNORE = "JSON_IGNORE"
|
||||
Private Const CMNUSER = "CMNUSER"
|
||||
|
||||
|
||||
' ============================================================
|
||||
' Main: GenerateJukCsvItemDefinition
|
||||
' ============================================================
|
||||
Public Sub GenerateJukCsvItemDefinition()
|
||||
Dim ws As Worksheet
|
||||
Dim outputPath As String
|
||||
Dim sqlLines As String
|
||||
Dim lastRow As Long
|
||||
Dim i As Long
|
||||
Dim sql As String
|
||||
|
||||
On Error Resume Next
|
||||
Set ws = ThisWorkbook.Worksheets(TARGET_SHEET_NAME)
|
||||
On Error GoTo 0
|
||||
|
||||
If ws Is Nothing Then
|
||||
MsgBox "シート [" & TARGET_SHEET_NAME & "] が見つかりません。", vbExclamation
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
lastRow = ws.Cells(ws.Rows.Count, COL_ITEM_TITLE).End(xlUp).Row
|
||||
|
||||
If lastRow < DATA_START_ROW Then
|
||||
MsgBox "データが見つかりません。", vbExclamation
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
sqlLines = ""
|
||||
|
||||
For i = DATA_START_ROW To lastRow
|
||||
sql = GenerateSqlForRow(ws, i)
|
||||
If sql <> "" Then
|
||||
sqlLines = sqlLines & sql & vbCrLf
|
||||
End If
|
||||
Next i
|
||||
|
||||
If sqlLines = "" Then
|
||||
MsgBox "出力するデータがありませんでした。", vbInformation
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
outputPath = ThisWorkbook.Path & "\" & OUTPUT_FILE_NAME
|
||||
|
||||
Call WriteTextFile(outputPath, FormatSql(sqlLines))
|
||||
|
||||
MsgBox "SQLファイルを生成しました:" & vbCrLf & outputPath, vbInformation
|
||||
|
||||
End Sub
|
||||
|
||||
|
||||
' ============================================================
|
||||
' Generate SQL for a single row
|
||||
' IDE表示用: 只需要对value做注释
|
||||
' ============================================================
|
||||
Private Function GenerateSqlForRow(ws As Worksheet, rowNum As Long) As String
|
||||
Dim itemTitle As String
|
||||
Dim itemSeq As Long
|
||||
Dim sqlParts As Variant
|
||||
|
||||
itemTitle = GetCellValue(ws, rowNum, COL_ITEM_TITLE)
|
||||
If itemTitle = "" Then
|
||||
GenerateSqlForRow = ""
|
||||
Exit Function
|
||||
End If
|
||||
|
||||
itemSeq = CLng(GetCellValue(ws, rowNum, COL_ITEM_SEQ))
|
||||
|
||||
sqlParts = Array( _
|
||||
"INSERT INTO sh_csv_item_definition (", _ ' INSERT INTO
|
||||
CODE & ",", _ ' code
|
||||
ITEM_SEQ & ",", _ ' item_seq
|
||||
ITEM_TITLE & ",", _ ' item_title
|
||||
ITEM_NAME & ",", _ ' item_name
|
||||
IS_DUPLICATE_CHECK_KEY & ",", _ ' is_duplicate_check_key
|
||||
DATA_TYPE & ",", _ ' data_type
|
||||
PRECISION & ",", _ ' precision
|
||||
SCALE & ",", _ ' scale
|
||||
NULLABLE & ",", _ ' nullable
|
||||
ENABLE_FORMAT_CHECK & ",", _ ' enable_format_check
|
||||
FORMAT_REGEX & ",", _ ' format_regex
|
||||
ENABLE_EXIST_CHECK & ",", _ ' enable_exist_check
|
||||
ALLOWED_VALUES & ",", _ ' allowed_values
|
||||
MASTER_SYBT & ",", _ ' master_sybt
|
||||
ENABLE_RELATION_CHECK & ",", _ ' enable_relation_check
|
||||
JSON_IGNORE & ",", _ ' json_ignore
|
||||
CMNUSER & ")", _ ' cmnuser
|
||||
") VALUES (", _ ' VALUES
|
||||
GetCode(), _ ' code
|
||||
GetItemSeq(itemSeq), _ ' item_seq
|
||||
SqlString(itemTitle), _ ' item_title
|
||||
GetIsChecked(ws, rowNum, COL_PK), _ ' is_duplicate_check_key
|
||||
SqlString(GetCellValue(ws, rowNum, COL_DATA_TYPE)), _ ' data_type
|
||||
GetNull(), _ ' precision
|
||||
GetNull(), _ ' scale
|
||||
Not GetIsChecked(ws, rowNum, COL_REQUIRED), _ ' nullable
|
||||
GetIsChecked(ws, rowNum, COL_FORMAT_CHECK), _ ' enable_format_check
|
||||
GetEmptyStr(), _ ' format_regex
|
||||
GetIsChecked(ws, rowNum, COL_EXIST_CHECK), _ ' enable_exist_check
|
||||
SqlArrayOrNull(GetCellValue(ws, rowNum, COL_ALLOWED_VALUES)), _ ' allowed_values
|
||||
GetEmptyStr(), _ ' master_sybt
|
||||
GetIsChecked(ws, rowNum, COL_RELATION_CHECK), _ ' enable_relation_check
|
||||
GetIsChecked(ws, rowNum, COL_JSON_IGNORE, True), _ ' json_ignore
|
||||
GetCmnuser()) ' cmnuser
|
||||
|
||||
GenerateSqlForRow = Join(sqlParts, "")
|
||||
|
||||
End Function
|
||||
|
||||
|
||||
' ============================================================
|
||||
' Helper: Get code value
|
||||
' ============================================================
|
||||
Private Function GetCode() As String
|
||||
GetCode = "'" & CODE_PREFIX & "', "
|
||||
End Function
|
||||
|
||||
|
||||
' ============================================================
|
||||
' Helper: Get item_seq value
|
||||
' ============================================================
|
||||
Private Function GetItemSeq(seq As Long) As String
|
||||
GetItemSeq = seq & ", "
|
||||
End Function
|
||||
|
||||
|
||||
' ============================================================
|
||||
' Helper: Get cmnuser value
|
||||
' ============================================================
|
||||
Private Function GetCmnuser() As String
|
||||
GetCmnuser = "'" & DEFAULT_CMNUSER & "'"
|
||||
End Function
|
||||
|
||||
|
||||
' ============================================================
|
||||
' Helper: Get NULL value
|
||||
' ============================================================
|
||||
Private Function GetNull() As String
|
||||
GetNull = "NULL, "
|
||||
End Function
|
||||
|
||||
|
||||
' ============================================================
|
||||
' Helper: Get empty string value
|
||||
' ============================================================
|
||||
Private Function GetEmptyStr() As String
|
||||
GetEmptyStr = "'', "
|
||||
End Function
|
||||
|
||||
|
||||
' ============================================================
|
||||
' Format: 去掉IDE的换行和缩进,输出1行
|
||||
' ============================================================
|
||||
Private Function FormatSql(sql As String) As String
|
||||
Dim lines As Variant
|
||||
Dim i As Long
|
||||
Dim result As String
|
||||
|
||||
lines = Split(sql, vbCrLf)
|
||||
result = ""
|
||||
|
||||
For i = LBound(lines) To UBound(lines)
|
||||
If Trim(lines(i)) <> "" Then
|
||||
result = result & Trim(lines(i))
|
||||
End If
|
||||
Next i
|
||||
|
||||
FormatSql = result
|
||||
End Function
|
||||
|
||||
|
||||
' ============================================================
|
||||
' Helper: Get cell value as string (trimmed)
|
||||
' ============================================================
|
||||
Private Function GetCellValue(ws As Worksheet, rowNum As Long, colNum As Long) As String
|
||||
GetCellValue = Trim(CStr(ws.Cells(rowNum, colNum).Value))
|
||||
End Function
|
||||
|
||||
|
||||
' ============================================================
|
||||
' Helper: Check if cell contains "○"
|
||||
' ============================================================
|
||||
|
||||
|
||||
' ============================================================
|
||||
' Helper: Boolean to SQL string
|
||||
' ============================================================
|
||||
|
||||
|
||||
' ============================================================
|
||||
' Helper: String to SQL (quoted and escaped)
|
||||
' ============================================================
|
||||
Private Function SqlString(s As String) As String
|
||||
If s = "" Then
|
||||
SqlString = "NULL, "
|
||||
Else
|
||||
SqlString = "'" & Replace(s, "'", "''") & "', "
|
||||
End If
|
||||
End Function
|
||||
|
||||
|
||||
' ============================================================
|
||||
' Helper: Array string to SQL or NULL
|
||||
' ============================================================
|
||||
Private Function SqlArrayOrNull(s As String) As String
|
||||
If s = "" Then
|
||||
SqlArrayOrNull = "NULL, "
|
||||
Else
|
||||
SqlArrayOrNull = "'{" & s & "}', "
|
||||
End If
|
||||
End Function
|
||||
|
||||
|
||||
' ============================================================
|
||||
' Helper: Write text file
|
||||
' ============================================================
|
||||
Private Sub WriteTextFile(filePath As String, content As String)
|
||||
Dim fileNum As Long
|
||||
fileNum = FreeFile
|
||||
Open filePath For Output As #fileNum
|
||||
Print #fileNum, content;
|
||||
Close #fileNum
|
||||
End Sub
|
||||
Reference in New Issue
Block a user