📊 Tera計算2_2データ作成.vb
詳細説明書 - データ作成・加工フォーム仕様
📋 概要
Tera計算2_2データ作成.vbは、配送センター規模計算システムにおけるデータ準備・加工フォームの実装ファイルです。
このフォームは、後続の規模計算処理で必要となる各種集計テーブルおよびEIQ分析データを生成する中核的な役割を果たします。
🎯 主要機能
- データ作成パイプライン: 20以上のAccessテーブルを段階的に生成
- EIQ分析データ生成: 日別・全体・平均の各レベルでケース/バラのEIQマトリクスを構築
- データ状態管理: 既存データの有無を判定し、重複作成を防止
- 削除・リセット機能: 生成済みデータの一括削除と再作成準備
- データ表示・選択: 生成されたEIQデータの確認と出荷日別選択
⚠️ 重要な注意事項
本フォームはAccess データベース(MyDB)に対して大量のSQL操作を実行します。
データ作成処理はデータが存在しない場合のみ実行され、既存データがある場合は保護されます。
削除操作はT7*、T8*、T9*、TA*テーブルを一括削除するため、実行前の確認が重要です。
| 項目 |
内容 |
| ファイル名 |
Tera計算2_2データ作成.vb |
| フォームクラス名 |
Tera計算2用データ作成F |
| 総行数 |
845行 |
| 言語 |
Visual Basic .NET (Windows Forms) |
| 主要依存 |
System.Data.OleDb、Tera計算k1.vb(共有モジュール) |
🎯 目的と役割
システム内での位置づけ
本フォームは、Tera計算2システムにおける第2段階に位置します:
- メニュー画面 (Tera計算2_1メニュー画面.vb) - システム起動とワークフロー選択
- データ作成画面 (本フォーム) - 分析用データの生成と準備
- 規模計算画面 (配送センター規模計算_改5From) - 実際の計算処理
データフロー全体像
入力: T050_日別仮集計 (元データ)
↓
集計処理: T610系テーブル生成 (全出荷集計、日別集計、ケース/バラ集計)
↓
EIQ雛形生成: T700_雛形EIQ
↓
日別EIQ生成: T710/T720/T730 (日別ケースバラ/ケース/バラ)
↓
全データEIQ生成: T810/T820/T830 (全ケースバラ/ケース/バラ)
↓
平均EIQ生成: T910/T920/T930 (全平均ケースバラ/ケース/バラ)
↓
結合処理: TA10_ケースバラデータEIQ (最終成果物)
EIQ分析とは
EIQ分析は物流センターの設計・分析において広く使われる手法です:
- E (Entry): 出荷先数、伝票数
- I (Item): アイテム数、品目数
- Q (Quantity): 数量、ケース数、バラ数
これらの指標を組み合わせることで、出荷パターン、ピッキング効率、保管レイアウトなどの最適化に必要な情報を得ることができます。
🏗️ 構造
クラス階層
Public Class Tera計算2用データ作成F
Inherits System.Windows.Forms.Form
Dim データ有無chk1 As Integer
End Class
主要プロシージャ一覧
| 分類 |
プロシージャ名 |
概要 |
| 初期化 |
Tera計算2データ作成F_Load |
フォーム読み込み時の初期化処理 |
| 出荷日ConB作成 |
出荷日コンボボックスの生成 |
| メイン処理 |
Tera計算2データ作成Bt_Click |
データ作成パイプライン全体の実行 |
| 全データ削除ChkB_CheckedChanged |
データ削除・リセット処理 |
| 表示Bt_Click / 表示開始 |
生成データの表示 |
| 計算・条件設定 |
全データ日数 |
データ期間の日数計算 |
| EIQ計算条件 |
出荷単位に応じたテーブル名決定 |
| T610系集計 |
T610_全出荷集計作成 |
全出荷データ集計 |
| T612_全出荷日別集計作成 |
日別出荷集計 |
| T614_ケース出荷日別集計作成 |
ケース出荷日別集計 |
| T615_バラ出荷日別集計作成 |
バラ出荷日別集計 |
| T620_稼働時間日別集計作成 |
稼働時間集計 |
| T700系EIQ |
T700_雛形EIQ |
EIQマトリクスの雛形生成 |
| T710_日別ケースバラデータEIQ作成 |
日別ケースバラEIQ |
| T720_日別ケースデータEIQ作成 |
日別ケースEIQ |
| T730_日別バラデータEIQ作成 |
日別バラEIQ |
| T810系EIQ |
T810_全ケースバラデータEIQ作成 |
全ケースバラEIQ |
| T820_全ケースデータEIQ作成 |
全ケースEIQ |
| T830_全バラデータEIQ作成 |
全バラEIQ |
| T910系EIQ |
T910_全平均ケースバラデータEIQ作成 |
全平均ケースバラEIQ |
| T920_全平均ケースデータEIQ作成 |
全平均ケースEIQ |
| T930_全平均バラデータEIQ作成 |
全平均バラEIQ |
| 結合・修正 |
EIQテーブル結合 |
最終EIQテーブル(TA10)の生成 |
| Null修正 |
NULL値の補正処理 |
| ナビゲーション |
メニュー画面へBt_Click |
メニュー画面への戻り |
🔧 初期化処理
フォームロード処理
Private Sub Tera計算2データ作成F_Load(sender As Object, e As EventArgs) _
Handles MyBase.Load
If Table有無("T830_全バラデータEIQ") = True Then
データ有無chk1 = 1
Else
データ有無chk1 = 0
End If
ベースDataTb.Text = "Tera計算.accdb「TA10_ケースバラデータEIQ」"
出荷日ConB作成()
End Sub
初期化の仕組み
- データ状態判定: T830_全バラデータEIQテーブルの存在を確認し、
データ有無chk1フラグを設定
- 目的: データ作成済みの場合は重複実行を防止し、「データ作成 完了してます」メッセージを表示
- 理由: T830は最終段階近くで生成されるため、存在すれば全パイプラインが完了している判断材料となる
出荷日コンボボックス作成
Private Sub 出荷日ConB作成()
SQLCm.CommandText = "SELECT T050_日別仮集計.出荷日 FROM T050_日別仮集計 " & _ "GROUP BY T050_日別仮集計.出荷日;"
Adapter.Fill(Table)
作業Dgv1.DataSource = Table
With 出荷日ComB
.Items.Clear()
.Items.Add("全データ平均")
.Items.Add("全データ")
For i = 0 To 作業Dgv1.RowCount - 2
.Items.Add(作業Dgv1.Rows(i).Cells(0).Value)
Next
.Text = "全データ平均"
End With
End Sub
このプロシージャは、T050_日別仮集計テーブルから出荷日の一覧を取得し、コンボボックスに追加します。
特別な集計オプション「全データ平均」と「全データ」を先頭に配置し、その後に個別の日付が続きます。
| 選択肢 |
意味 |
| 全データ平均 |
全期間の平均値を使用した計算(デフォルト) |
| 全データ |
全期間の合計値を使用した計算 |
| 個別日付 |
特定日のデータを使用した計算(例: 2024/01/15) |
⚙️ データ作成処理
メイン実行フロー
Private Sub Tera計算2データ作成Bt_Click(sender As Object, e As EventArgs) _
Handles Tera計算2データ作成Bt.Click
処理経過Tb.Text = ""
If データ有無chk1 = 0 Then
処理経過Tb.Text = "データ作成中!!" : 処理経過Tb.Update()
全データ日数()
T610_全出荷集計作成() : Tera計算2出荷集計ChkB.Checked = True
T612_全出荷日別集計作成()
T614_ケース出荷日別集計作成()
T615_バラ出荷日別集計作成()
T620_稼働時間日別集計作成() : Tera計算2従来計算ChkB.Checked = True
T700_雛形EIQ()
T710_日別ケースバラデータEIQ作成() : Tera計算2日別ケースバラEIQChcB.Checked = True
T720_日別ケースデータEIQ作成() : Tera計算2日別ケースEIQChkB.Checked = True
T730_日別バラデータEIQ作成() : Tera計算2日別バラEIQChkB.Checked = True
Null修正()
T810_全ケースバラデータEIQ作成() : Tera計算2全ケースバラEIQChkB.Checked = True
T820_全ケースデータEIQ作成() : Tera計算2全ケースEIQChkB.Checked = True
T830_全バラデータEIQ作成() : Tera計算2全バラEIQChkB.Checked = True
T910_全平均ケースバラデータEIQ作成() : Tera計算2全平均ケースバラEIQChkB.Checked = True
T920_全平均ケースデータEIQ作成() : Tera計算2全平均ケースEIQChkB.Checked = True
T930_全平均バラデータEIQ作成() : Tera計算2全平均バラEIQChkB.Checked = True
EIQテーブル結合() : Tera計算2EIQテーブル結合ChkB.Checked = True
出荷日ConB作成()
Tera計算2全データ削除ChkB.Checked = False
処理経過Tb.Text = "データ作成 完了"
Else
処理経過Tb.Text = "データ作成は 完了してます"
End If
End Sub
パイプラインの6ステージ
ステージ1: 基礎集計テーブル生成 (T610系)
目的: 元データ(T050_日別仮集計)から各種出荷集計を作成
全データ日数() - データ期間の日数を計算
T610_全出荷集計作成() - 全体の出荷集計
T612_全出荷日別集計作成() - 日別出荷集計
T614_ケース出荷日別集計作成() - ケース出荷の日別集計
T615_バラ出荷日別集計作成() - バラ出荷の日別集計
T620_稼働時間日別集計作成() - 稼働時間の日別集計
ステージ2: EIQ雛形と日別EIQマトリクス生成 (T700系)
目的: EIQ分析の基礎となるマトリクス構造を構築
T700_雛形EIQ() - EIQマトリクスの雛形(行列構造)
T710_日別ケースバラデータEIQ作成() - 日別のケース+バラ混在EIQ
T720_日別ケースデータEIQ作成() - 日別のケースのみEIQ
T730_日別バラデータEIQ作成() - 日別のバラのみEIQ
特徴: 各出荷日ごとのEIQ特性を捉えるため、日次変動分析が可能
ステージ3: NULL値補正
目的: EIQ計算で発生したNULL値を補正
Null修正() - EIQテーブル内のNULL値を0または適切な値に変換
重要性: 後続の集計・平均計算でNULLがエラーを引き起こさないようにする
ステージ4: 全データEIQマトリクス生成 (T810系)
目的: 全期間を対象としたEIQ合計値を算出
T810_全ケースバラデータEIQ作成() - 全期間ケース+バラEIQ
T820_全ケースデータEIQ作成() - 全期間ケースのみEIQ
T830_全バラデータEIQ作成() - 全期間バラのみEIQ
用途: 全体傾向の把握、ピーク分析
ステージ5: 全平均EIQマトリクス生成 (T910系)
目的: 日平均値を算出し、標準的な1日あたりの作業量を推定
T910_全平均ケースバラデータEIQ作成() - 平均ケース+バラEIQ
T920_全平均ケースデータEIQ作成() - 平均ケースのみEIQ
T930_全平均バラデータEIQ作成() - 平均バラのみEIQ
計算式: 平均値 = 全データ合計 ÷ 営業日数
用途: 標準作業量の設定、人員計画
ステージ6: 最終テーブル結合 (TA10)
目的: 各段階のEIQデータを統合し、規模計算用の最終テーブルを生成
EIQテーブル結合() - TA10_ケースバラデータEIQ を作成
成果物: TA10テーブルには日別/全体/平均のすべてのEIQ情報が含まれ、後続の規模計算フォームで参照されます
処理時間と進捗表示
⏱️ パフォーマンス特性
データ作成パイプラインは20以上のテーブル生成と複数のSQL集計を実行するため、
データ量に応じて数秒~数分の処理時間を要します。
- ステータス表示: 処理経過Tbに「データ作成中!!」が表示され、各段階でチェックボックスが順次チェックされます
- ユーザー待機: 完了まで画面操作は待機状態となります
- 完了メッセージ: 「データ作成 完了」が表示され、すべてのチェックボックスがチェック済みになります
代表的なテーブル生成ロジック例
T610_全出荷集計作成の実装パターン
各テーブル生成関数は以下の共通パターンに従います:
Private Sub T610_全出荷集計作成()
If Table有無("T610_全出荷集計") = True Then
DEL_table("T610_全出荷集計")
End If
Dim sql As String = "SELECT " & _ "T050.出荷日, " & _ "T050.得意先名, " & _ "T050.出荷単位, " & _ "Sum(T050.ケース数) AS ケース数集計, " & _ "Sum(T050.バラ数) AS バラ数集計, " & _ "Sum(T050.総ピース数) AS 総ピース数集計 " & _ "INTO T610_全出荷集計 " & _ "FROM T050_日別仮集計 AS T050 " & _ "GROUP BY T050.出荷日, T050.得意先名, T050.出荷単位;"
Sqlcommands_Add(sql)
End Sub
この3ステップパターン(削除→SQL構築→実行)が全テーブル生成で共通して使われています。
🗑️ 削除処理
全データ削除チェックボックス
Private Sub 全データ削除ChkB_CheckedChanged(sender As Object, e As EventArgs) _
Handles Tera計算2全データ削除ChkB.CheckedChanged
If Tera計算2全データ削除ChkB.Checked = True Then
Tera計算2_EIQGV1.DataSource = Nothing
Tera計算2_EQ総計GV.DataSource = Nothing
Tera計算2_EI総計GV.DataSource = Nothing
Tera計算2_IQ総計GV.DataSource = Nothing
Tera計算2_従来計算GV.DataSource = Nothing
For i = 700 To 799
DEL_table("T" & i) Next
For i = 800 To 899
DEL_table("T" & i) Next
For i = 900 To 999
DEL_table("T" & i) Next
For i = 10 To 99
DEL_table("TA" & i) Next
Tera計算2日別ケースバラEIQChcB.Checked = False
Tera計算2日別ケースEIQChkB.Checked = False
Tera計算2日別バラEIQChkB.Checked = False
Tera計算2全ケースバラEIQChkB.Checked = False
Tera計算2全ケースEIQChkB.Checked = False
Tera計算2全バラEIQChkB.Checked = False
Tera計算2全平均ケースバラEIQChkB.Checked = False
Tera計算2全平均ケースEIQChkB.Checked = False
Tera計算2全平均バラEIQChkB.Checked = False
Tera計算2EIQテーブル結合ChkB.Checked = False
データ有無chk1 = 0
End If
End Sub
削除範囲
| 範囲 |
テーブル |
内容 |
| T700~T799 |
100個 |
日別EIQ関連 (雛形、日別ケースバラ、日別ケース、日別バラ) |
| T800~T899 |
100個 |
全データEIQ関連 (全ケースバラ、全ケース、全バラ) |
| T900~T999 |
100個 |
全平均EIQ関連 (平均ケースバラ、平均ケース、平均バラ) |
| TA10~TA99 |
90個 |
最終結合テーブル (TA10_ケースバラデータEIQ等) |
⚠️ 削除時の注意
削除チェックボックスはチェック時に即座に削除を実行します。
確認ダイアログは表示されないため、誤操作に注意が必要です。
- 削除対象は最大390個のテーブルに及ぶ可能性があります
- T610系集計テーブルは削除されず保護されます
- 削除後は
データ有無chk1が0にリセットされ、再作成が可能になります
削除処理の目的
- データ再作成: 元データ(T050)が更新された場合、再計算が必要
- エラー修正: 途中でエラーが発生した場合、中途半端な状態をクリーンアップ
- テスト・検証: 開発・検証時のデータリセット
- ディスク容量確保: 大量のテーブルを削除して容量を解放
📊 表示処理
表示ボタンクリック
Private Sub 表示Bt_Click(sender As Object, e As EventArgs) _
Handles 表示Bt.Click
表示開始()
End Sub
Private Sub 表示開始()
EIQ計算条件()
End Sub
EIQ計算条件によるテーブル選択
Private Sub EIQ計算条件()
Select Case 出荷日ComB.Text
Case "全データ平均"
EIQテーブル = "T910_全平均ケースバラデータEIQ"
EIQケースT = "T920_全平均ケースデータEIQ"
EIQバラT = "T930_全平均バラデータEIQ"
Case "全データ"
EIQテーブル = "T810_全ケースバラデータEIQ"
EIQケースT = "T820_全ケースデータEIQ"
EIQバラT = "T830_全バラデータEIQ"
Case Else
EIQテーブル = "T710_日別ケースバラデータEIQ"
EIQケースT = "T720_日別ケースデータEIQ"
EIQバラT = "T730_日別バラデータEIQ"
End Select
End Sub
表示される情報
メインEIQマトリクス (Tera計算2_EIQGV1)
E(出荷先)を行、I(品目)を列とする2次元マトリクスで、各セルにQ(数量)情報が格納されます。
このマトリクスにより、「どの得意先に」「どの商品を」「どれだけ」出荷したかが一目で把握できます。
EQ総計 (Tera計算2_EQ総計GV)
E × Q: 出荷先ごとの数量集計。各得意先への出荷ボリュームを比較し、主要顧客を識別します。
EI総計 (Tera計算2_EI総計GV)
E × I: 出荷先ごとの品目数。各得意先が何種類の商品を注文しているかを示し、ピッキング複雑度の指標となります。
IQ総計 (Tera計算2_IQ総計GV)
I × Q: 品目ごとの数量集計。ABC分析の基礎データとなり、在庫配置や保管戦略に活用されます。
従来計算 (Tera計算2_従来計算GV)
T620_稼働時間日別集計の内容を表示。従来の計算方法との比較検証に使用されます。
💡 表示機能の活用
表示機能は、生成されたデータの妥当性検証に不可欠です:
- データ確認: 作成直後にデータ内容を目視確認
- 異常値検出: 極端に大きい/小さい値、NULLの残存などをチェック
- 日別比較: 出荷日を切り替えて日次変動を確認
- ケース/バラ比較: 出荷形態による特性差を分析
🔄 画面遷移
メニュー画面への戻り
Private Sub メニュー画面へBt_Click(sender As Object, e As EventArgs) _
Handles メニュー画面へBt.Click
Me.Close()
End Sub
このフォームはメニュー画面からShowDialog(Me)でモーダル表示されているため、
Close()によりメニュー画面に制御が戻ります。
ワークフロー全体図
1. メニュー画面 (Tera計算2_1メニュー画面.vb)
↓ [データ加工]ボタンクリック
2. データ作成画面 (本フォーム)
├─ 初期化: データ有無確認、出荷日リスト作成
├─ データ作成: 20段階のパイプライン実行
├─ データ表示: EIQマトリクスと集計ビュー表示
├─ データ削除: T7*/T8*/T9*/TA*テーブル削除
└─ メニューへ戻る
↓ フォームクローズ
1. メニュー画面 (戻り)
↓ [規模計算]ボタンクリック
3. 規模計算画面 (配送センター規模計算_改5From)
└─ TA10_ケースバラデータEIQを使用した計算実行
🔗 フォーム間のデータ連携
フォーム間で直接データを受け渡すのではなく、Accessデータベース(MyDB)を介した間接連携を行います:
- データ作成フォームがTA10_ケースバラデータEIQを生成
- 規模計算フォームがそのテーブルを参照
- 共有モジュール(Tera計算k1.vb)の
MyDB変数でデータベースパスを管理
🔗 依存関係
外部依存
共有モジュール: Tera計算k1.vb
| 依存項目 |
用途 |
| MyDB |
Accessデータベースファイルのフルパス |
| Table有無(テーブル名) |
指定テーブルの存在確認 |
| DEL_table(テーブル名) |
指定テーブルの削除 |
| DEL_Query(クエリ名) |
指定クエリの削除 |
| Sqlcommands_Add(SQL文) |
SQL文の実行 (テーブル作成、データ挿入等) |
.NETフレームワーク
- System.Data.OleDb: Access データベースへの接続・操作
- System.Windows.Forms: フォーム、コントロール、イベント処理
- System.Data: DataTable、DataAdapter などのデータ管理
データベース依存
入力テーブル
| テーブル名 |
内容 |
| T050_日別仮集計 |
元データ。出荷日、得意先名、商品ID、出荷単位、ケース数、バラ数などを含む |
生成テーブル (主要なもの)
| テーブルグループ |
テーブル例 |
内容 |
| T610系 |
T610, T612, T614, T615, T620 |
基礎集計 (全出荷、日別、ケース/バラ、稼働時間) |
| T700系 |
T700, T710, T720, T730 |
EIQ雛形と日別EIQ (ケースバラ/ケース/バラ) |
| T810系 |
T810, T820, T830 |
全データEIQ (ケースバラ/ケース/バラ) |
| T910系 |
T910, T920, T930 |
全平均EIQ (ケースバラ/ケース/バラ) |
| TA10系 |
TA10_ケースバラデータEIQ |
最終統合EIQテーブル (規模計算で使用) |
依存関係図
[外部システム]
└─ A:~F:\Tera計算Data\ (データディレクトリ)
└─ Tera計算.accdb (Access データベース)
├─ T050_日別仮集計 (入力データ)
└─ T610~TA10 (本フォームが生成)
↓
[共有モジュール]
└─ Tera計算k1.vb
├─ ファイル確認() (起動時パス確認)
├─ MyDB (データベースパス保持)
└─ Table有無, DEL_table, Sqlcommands_Add (DB操作)
↓
[本フォーム]
└─ Tera計算2用データ作成F
├─ データ作成パイプライン (20段階)
├─ EIQ表示・選択機能
└─ データ削除・リセット機能
↓
[後続フォーム]
└─ 配送センター規模計算_改5From
└─ TA10_ケースバラデータEIQを参照して規模計算実行
設計上の特徴
✅ 疎結合アーキテクチャ
- データベース仲介: フォーム間で直接オブジェクトを受け渡さず、データベースを介して連携
- 共有モジュール: DB操作や起動処理を共有モジュールに集約し、重複を排除
- 状態フラグ:
データ有無chk1により重複実行を防止し、データ整合性を保護
- 段階的処理: パイプラインを明確に分割し、各段階でチェックボックスによる完了確認を実施
⚙️ 技術的注意点
パフォーマンス考慮事項
⚡ 処理時間最適化
- 大量SQL実行: 20段階のパイプラインで複数回のSELECT INTO、GROUP BY、JOINを実行するため、データ量に比例して処理時間が増加
- インデックス: T050_日別仮集計に適切なインデックス(出荷日、得意先名、商品ID)がない場合、極端に遅くなる可能性
- メモリ使用量: DataGridViewへの大量行バインドはメモリを消費するため、100万行を超えるデータでは注意が必要
- Access制約: Access データベースは2GB制限があり、テーブル数が増えるとファイルサイズが肥大化
エラーハンドリングの不足
⚠️ エラー処理の補強が推奨される箇所
- SQL実行失敗: テーブル作成中にSQL構文エラーやデータ型不一致が発生しても、現状ではエラーメッセージが不明瞭
- データベース接続切断: ネットワークドライブ上のAccessファイルが切断された場合の対処がない
- ディスク容量不足: テーブル生成中に容量不足になった場合、不完全な状態になる可能性
- NULL値問題:
Null修正()があるものの、すべてのケースをカバーしているか要検証
推奨対策: Try-Catchブロック、トランザクション、ロールバック機能の追加
保守性に関する観察
📝 コード構造の特徴
- プロシージャの命名: テーブル名をそのまま関数名に使っているため、対応関係が明確
- 段階的実行: 各段階が独立したプロシージャになっており、テスト・デバッグが容易
- チェックボックス同期: 処理進捗が視覚的に確認できる設計
- SQL文のハードコード: SQL文がVBコード内に直接記述されており、テーブル構造変更時に多くの箇所を修正する必要がある
改善案: SQL文を外部ファイル(XML、JSON)や設定テーブルに分離すると、保守性が向上
テスト戦略
| テスト種別 |
テストケース |
| 単体テスト |
- 各T610/T700/T810/T910系プロシージャが正しいテーブルを生成するか
- Null修正が欠損値を適切に補正するか
- 出荷日ConB作成が正しい日付リストを返すか
|
| 統合テスト |
- データ作成パイプライン全体が正常に完了するか
- 削除→再作成が正しく動作するか
- 表示機能が各テーブルを正しく表示するか
|
| 性能テスト |
- 10万行、100万行のT050データでの実行時間測定
- メモリ使用量のモニタリング
- Access ファイルサイズの肥大化度合い確認
|
| エラーテスト |
- T050が存在しない場合の挙動
- 途中でデータベース接続が切断された場合
- ディスク容量不足時の挙動
|
将来の拡張可能性
- 並列処理: 独立した集計(T710/T720/T730など)を並列実行して高速化
- クラウドDB移行: AccessからSQL Server、PostgreSQLへの移行で大容量データ対応
- バッチ処理化: GUIフォームではなく、コマンドラインバッチとして自動実行
- ログ出力: 各段階の実行時間、レコード数をログファイルに記録
- 差分更新: 全件再作成ではなく、増分データのみを追加する仕組み
📌 まとめ
Tera計算2_2データ作成.vbは、配送センター規模計算システムのデータ準備段階を担う重要なフォームです。
EIQ分析に必要な20以上のテーブルを段階的に生成し、日別・全体・平均の各レベルでケース/バラのデータを整備します。
主要機能の再確認
| 機能 |
概要 |
対応プロシージャ |
| 初期化 |
データ有無確認、出荷日リスト作成 |
Tera計算2データ作成F_Load、出荷日ConB作成 |
| データ作成 |
6ステージ・20段階のパイプライン実行 |
Tera計算2データ作成Bt_Click、T610~TA10系プロシージャ |
| 削除・リセット |
T7*/T8*/T9*/TA*テーブルの一括削除 |
全データ削除ChkB_CheckedChanged |
| 表示・確認 |
EIQマトリクスと集計ビューの表示 |
表示Bt_Click、表示開始、EIQ計算条件 |
| ナビゲーション |
メニュー画面への戻り |
メニュー画面へBt_Click |
システム全体での位置づけ
本フォームはデータ変換レイヤーとして機能し、元データ(T050)を規模計算に適した形式(TA10)に変換します。
- 入力: T050_日別仮集計 (生の出荷データ)
- 出力: TA10_ケースバラデータEIQ (EIQ統合テーブル)
- 役割: 複雑な集計・分析を事前に実行し、規模計算フォームの負荷を軽減
開発者への推奨事項
🔧 保守・拡張時のポイント
- テーブル構造変更: T050の列追加・削除時は、すべてのT610~TA10系プロシージャを確認
- エラーハンドリング追加: Try-Catch、トランザクション、ロールバックを実装
- ログ出力: 各段階の実行時間とレコード数をログに記録し、性能分析を可能にする
- SQL外部化: ハードコードされたSQL文を設定ファイルに分離し、保守性向上
- 単体テスト作成: 各プロシージャが期待通りのテーブルを生成するかをテスト
- データベース移行検討: データ量増加に備え、SQL ServerやPostgreSQLへの移行を計画
関連ドキュメント
- Tera計算2_総合マニュアル・仕様書.html - システム全体の仕様と概要
- Tera計算2_1メニュー画面_詳細説明.html - メニュー画面の詳細
- Tera計算k1.vb - 共有モジュールのソースコード
- 配送センター規模計算_改5From - 後続の規模計算フォーム (ドキュメント未作成の場合は要作成)