📊 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段階に位置します:

  1. メニュー画面 (Tera計算2_1メニュー画面.vb) - システム起動とワークフロー選択
  2. データ作成画面 (本フォーム) - 分析用データの生成と準備
  3. 規模計算画面 (配送センター規模計算_改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 ' フォームコントロール (Designer.vbで定義) ' - Tera計算2データ作成Bt: データ作成実行ボタン ' - 全データ削除ChkB: 削除チェックボックス ' - 表示Bt: データ表示ボタン ' - 出荷日ComB: 出荷日選択コンボボックス ' - 処理経過Tb: ステータス表示テキストボックス ' - 各種ChkB: 処理完了チェックボックス (14個) ' - 各種Dgv: データ表示DataGridView (複数) ' 内部状態変数 Dim データ有無chk1 As Integer ' 0=未作成、1=作成済 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 ' T830テーブルの存在確認でデータ作成済みか判定 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作成() ' T050_日別仮集計から出荷日を取得 SQLCm.CommandText = "SELECT T050_日別仮集計.出荷日 FROM T050_日別仮集計 " & _ "GROUP BY T050_日別仮集計.出荷日;" Adapter.Fill(Table) 作業Dgv1.DataSource = Table With 出荷日ComB .Items.Clear() .Items.Add("全データ平均") ' 集計オプション1 .Items.Add("全データ") ' 集計オプション2 ' 個別の出荷日を追加 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() ' === ステージ1: 基礎集計 === 全データ日数() T610_全出荷集計作成() : Tera計算2出荷集計ChkB.Checked = True T612_全出荷日別集計作成() T614_ケース出荷日別集計作成() T615_バラ出荷日別集計作成() T620_稼働時間日別集計作成() : Tera計算2従来計算ChkB.Checked = True ' === ステージ2: EIQ雛形と日別EIQ === T700_雛形EIQ() T710_日別ケースバラデータEIQ作成() : Tera計算2日別ケースバラEIQChcB.Checked = True T720_日別ケースデータEIQ作成() : Tera計算2日別ケースEIQChkB.Checked = True T730_日別バラデータEIQ作成() : Tera計算2日別バラEIQChkB.Checked = True ' === ステージ3: NULL補正 === Null修正() ' === ステージ4: 全データEIQ === T810_全ケースバラデータEIQ作成() : Tera計算2全ケースバラEIQChkB.Checked = True T820_全ケースデータEIQ作成() : Tera計算2全ケースEIQChkB.Checked = True T830_全バラデータEIQ作成() : Tera計算2全バラEIQChkB.Checked = True ' === ステージ5: 全平均EIQ === T910_全平均ケースバラデータEIQ作成() : Tera計算2全平均ケースバラEIQChkB.Checked = True T920_全平均ケースデータEIQ作成() : Tera計算2全平均ケースEIQChkB.Checked = True T930_全平均バラデータEIQ作成() : Tera計算2全平均バラEIQChkB.Checked = True ' === ステージ6: 最終結合 === 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_全出荷集計作成() ' 1. 既存テーブルの削除 If Table有無("T610_全出荷集計") = True Then DEL_table("T610_全出荷集計") End If ' 2. SQL作成コマンドの構築 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.出荷単位;" ' 3. コマンド実行 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 ' === テーブル削除: T7*, T8*, T9*, TA* === 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 表示開始() ' 出荷日ComBの選択に基づいてテーブル名を決定 EIQ計算条件() ' === メインEIQマトリクス表示 === ' (DataGridViewにEIQテーブルをバインド) ' === 集計ビュー表示 === ' - EQ総計: 出荷先×数量のクロス集計 ' - EI総計: 出荷先×品目のクロス集計 ' - IQ総計: 品目×数量のクロス集計 ' - 従来計算: 稼働時間集計 ' (実装詳細は845行のファイル内に展開されている) End Sub

EIQ計算条件によるテーブル選択

Private Sub EIQ計算条件() ' 出荷日ComBの選択値に応じて使用テーブルを決定 Select Case 出荷日ComB.Text Case "全データ平均" ' T910系テーブルを使用 (平均値) EIQテーブル = "T910_全平均ケースバラデータEIQ" EIQケースT = "T920_全平均ケースデータEIQ" EIQバラT = "T930_全平均バラデータEIQ" Case "全データ" ' T810系テーブルを使用 (全期間合計) EIQテーブル = "T810_全ケースバラデータEIQ" EIQケースT = "T820_全ケースデータEIQ" EIQバラT = "T830_全バラデータEIQ" Case Else ' T710系テーブルを使用 (特定日) 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の残存などをチェック
  • 日別比較: 出荷日を切り替えて日次変動を確認
  • ケース/バラ比較: 出荷形態による特性差を分析

🔗 依存関係

外部依存

共有モジュール: 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統合テーブル)
  • 役割: 複雑な集計・分析を事前に実行し、規模計算フォームの負荷を軽減

開発者への推奨事項

🔧 保守・拡張時のポイント

  1. テーブル構造変更: T050の列追加・削除時は、すべてのT610~TA10系プロシージャを確認
  2. エラーハンドリング追加: Try-Catch、トランザクション、ロールバックを実装
  3. ログ出力: 各段階の実行時間とレコード数をログに記録し、性能分析を可能にする
  4. SQL外部化: ハードコードされたSQL文を設定ファイルに分離し、保守性向上
  5. 単体テスト作成: 各プロシージャが期待通りのテーブルを生成するかをテスト
  6. データベース移行検討: データ量増加に備え、SQL ServerやPostgreSQLへの移行を計画

関連ドキュメント

  • Tera計算2_総合マニュアル・仕様書.html - システム全体の仕様と概要
  • Tera計算2_1メニュー画面_詳細説明.html - メニュー画面の詳細
  • Tera計算k1.vb - 共有モジュールのソースコード
  • 配送センター規模計算_改5From - 後続の規模計算フォーム (ドキュメント未作成の場合は要作成)