From ae56faf697107e76a6d954e2e4deaa81a4cb157d Mon Sep 17 00:00:00 2001 From: updsv7 Date: Thu, 23 Apr 2026 21:02:16 +0900 Subject: [PATCH] refactor --- README.md | 81 +++-- sql/sh_csv_item_definition_meta.sql | 44 +++ sql/tuk_csv_item_definition.sql | 41 +++ src/sh/juk/sheet/J1.cls | 292 ++++++++++++++++++ .../tuk}/init_module/Import_modules.bas | 0 src/{ => sh/tuk}/init_module/Test_Cache.bas | 0 src/{ => sh/tuk}/module/Common_Button.bas | 0 src/{ => sh/tuk}/module/Common_File_Utils.bas | 0 src/{ => sh/tuk}/module/Common_Functions.bas | 0 .../tuk}/module/Common_Global_Cache.bas | 0 src/{ => sh/tuk}/module/Common_Selector.bas | 0 src/{ => sh/tuk}/sheet/C1.cls | 0 src/{ => sh/tuk}/sheet/M1.cls | 0 src/{ => sh/tuk}/sheet/M2.cls | 0 src/{ => sh/tuk}/sheet/O1.cls | 0 src/{ => sh/tuk}/sheet/O2.cls | 0 src/{ => sh/tuk}/sheet/T1.cls | 0 src/{ => sh/tuk}/sheet/T2.cls | 0 src/{ => sh/tuk}/sheet/T3.cls | 0 src/{ => sh/tuk}/sheet/Z1.cls | 0 src/{ => sh/tuk}/sheet/Z2.cls | 0 src/{ => sh/tuk}/sheet/Z3.cls | 0 src/{ => sh/tuk}/sheet/Z4.cls | 0 23 files changed, 424 insertions(+), 34 deletions(-) create mode 100644 sql/sh_csv_item_definition_meta.sql create mode 100644 sql/tuk_csv_item_definition.sql create mode 100644 src/sh/juk/sheet/J1.cls rename src/{ => sh/tuk}/init_module/Import_modules.bas (100%) rename src/{ => sh/tuk}/init_module/Test_Cache.bas (100%) rename src/{ => sh/tuk}/module/Common_Button.bas (100%) rename src/{ => sh/tuk}/module/Common_File_Utils.bas (100%) rename src/{ => sh/tuk}/module/Common_Functions.bas (100%) rename src/{ => sh/tuk}/module/Common_Global_Cache.bas (100%) rename src/{ => sh/tuk}/module/Common_Selector.bas (100%) rename src/{ => sh/tuk}/sheet/C1.cls (100%) rename src/{ => sh/tuk}/sheet/M1.cls (100%) rename src/{ => sh/tuk}/sheet/M2.cls (100%) rename src/{ => sh/tuk}/sheet/O1.cls (100%) rename src/{ => sh/tuk}/sheet/O2.cls (100%) rename src/{ => sh/tuk}/sheet/T1.cls (100%) rename src/{ => sh/tuk}/sheet/T2.cls (100%) rename src/{ => sh/tuk}/sheet/T3.cls (100%) rename src/{ => sh/tuk}/sheet/Z1.cls (100%) rename src/{ => sh/tuk}/sheet/Z2.cls (100%) rename src/{ => sh/tuk}/sheet/Z3.cls (100%) rename src/{ => sh/tuk}/sheet/Z4.cls (100%) diff --git a/README.md b/README.md index e554229..cfe13ae 100644 --- a/README.md +++ b/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 diff --git a/sql/sh_csv_item_definition_meta.sql b/sql/sh_csv_item_definition_meta.sql new file mode 100644 index 0000000..36987e6 --- /dev/null +++ b/sql/sh_csv_item_definition_meta.sql @@ -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フラグ'; + diff --git a/sql/tuk_csv_item_definition.sql b/sql/tuk_csv_item_definition.sql new file mode 100644 index 0000000..c21d918 --- /dev/null +++ b/sql/tuk_csv_item_definition.sql @@ -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'); diff --git a/src/sh/juk/sheet/J1.cls b/src/sh/juk/sheet/J1.cls new file mode 100644 index 0000000..3afb4b2 --- /dev/null +++ b/src/sh/juk/sheet/J1.cls @@ -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 \ No newline at end of file diff --git a/src/init_module/Import_modules.bas b/src/sh/tuk/init_module/Import_modules.bas similarity index 100% rename from src/init_module/Import_modules.bas rename to src/sh/tuk/init_module/Import_modules.bas diff --git a/src/init_module/Test_Cache.bas b/src/sh/tuk/init_module/Test_Cache.bas similarity index 100% rename from src/init_module/Test_Cache.bas rename to src/sh/tuk/init_module/Test_Cache.bas diff --git a/src/module/Common_Button.bas b/src/sh/tuk/module/Common_Button.bas similarity index 100% rename from src/module/Common_Button.bas rename to src/sh/tuk/module/Common_Button.bas diff --git a/src/module/Common_File_Utils.bas b/src/sh/tuk/module/Common_File_Utils.bas similarity index 100% rename from src/module/Common_File_Utils.bas rename to src/sh/tuk/module/Common_File_Utils.bas diff --git a/src/module/Common_Functions.bas b/src/sh/tuk/module/Common_Functions.bas similarity index 100% rename from src/module/Common_Functions.bas rename to src/sh/tuk/module/Common_Functions.bas diff --git a/src/module/Common_Global_Cache.bas b/src/sh/tuk/module/Common_Global_Cache.bas similarity index 100% rename from src/module/Common_Global_Cache.bas rename to src/sh/tuk/module/Common_Global_Cache.bas diff --git a/src/module/Common_Selector.bas b/src/sh/tuk/module/Common_Selector.bas similarity index 100% rename from src/module/Common_Selector.bas rename to src/sh/tuk/module/Common_Selector.bas diff --git a/src/sheet/C1.cls b/src/sh/tuk/sheet/C1.cls similarity index 100% rename from src/sheet/C1.cls rename to src/sh/tuk/sheet/C1.cls diff --git a/src/sheet/M1.cls b/src/sh/tuk/sheet/M1.cls similarity index 100% rename from src/sheet/M1.cls rename to src/sh/tuk/sheet/M1.cls diff --git a/src/sheet/M2.cls b/src/sh/tuk/sheet/M2.cls similarity index 100% rename from src/sheet/M2.cls rename to src/sh/tuk/sheet/M2.cls diff --git a/src/sheet/O1.cls b/src/sh/tuk/sheet/O1.cls similarity index 100% rename from src/sheet/O1.cls rename to src/sh/tuk/sheet/O1.cls diff --git a/src/sheet/O2.cls b/src/sh/tuk/sheet/O2.cls similarity index 100% rename from src/sheet/O2.cls rename to src/sh/tuk/sheet/O2.cls diff --git a/src/sheet/T1.cls b/src/sh/tuk/sheet/T1.cls similarity index 100% rename from src/sheet/T1.cls rename to src/sh/tuk/sheet/T1.cls diff --git a/src/sheet/T2.cls b/src/sh/tuk/sheet/T2.cls similarity index 100% rename from src/sheet/T2.cls rename to src/sh/tuk/sheet/T2.cls diff --git a/src/sheet/T3.cls b/src/sh/tuk/sheet/T3.cls similarity index 100% rename from src/sheet/T3.cls rename to src/sh/tuk/sheet/T3.cls diff --git a/src/sheet/Z1.cls b/src/sh/tuk/sheet/Z1.cls similarity index 100% rename from src/sheet/Z1.cls rename to src/sh/tuk/sheet/Z1.cls diff --git a/src/sheet/Z2.cls b/src/sh/tuk/sheet/Z2.cls similarity index 100% rename from src/sheet/Z2.cls rename to src/sh/tuk/sheet/Z2.cls diff --git a/src/sheet/Z3.cls b/src/sh/tuk/sheet/Z3.cls similarity index 100% rename from src/sheet/Z3.cls rename to src/sh/tuk/sheet/Z3.cls diff --git a/src/sheet/Z4.cls b/src/sh/tuk/sheet/Z4.cls similarity index 100% rename from src/sheet/Z4.cls rename to src/sh/tuk/sheet/Z4.cls