📊 Tera計算1 マニュアル

📄 Tera計算_従来計算.vb

従来型集計分析モジュール - 完全技術仕様書
約1,182行 / Visual Basic .NET

📊 ファイル基本情報

ファイル名:Tera計算_従来計算.vb

行数:約1,182行

クラス名:Tera計算4_参考従来計算F

継承:Form (Windows Forms)

目的:従来型の統計的分析手法による物流データの集計・分析

主要機能:全データ集計、出荷単位別集計、ABC分析、日別チャート表示

🏗️ プログラム構成概要

💡 このファイルの役割
EIQ分析よりもシンプルで直感的な「従来型」の分析手法を提供します。 基本的な統計集計、ABC分析、チャートによる可視化を中心に、 初心者でも理解しやすい物流データ分析を実現します。

タブコントロール構成(4つの画面)

📋 使用している名前空間

Imports System.Data.OleDb Imports System.Windows.Forms.DataVisualization.Charting

🎯 主要機能詳細

1️⃣ 全データ集計タブ

📊 集計内容

表示項目 説明 データソース
日別集計 出荷日ごとの詳細集計(13項目) T230_日別集計
発送先数・アイテム数 実際の出荷先/商品の総数 T130_全出荷集計
延べ発送先数 日別の発送先数の合計 T230_日別集計の合計
延べアイテム数 日別のアイテム数の合計 T230_日別集計の合計

📈 集計指標(13項目)

  1. 出荷日 - 日付
  2. 出荷先数 - 日別の出荷先実数
  3. アイテム数 - 日別の商品実数
  4. 行数 - 伝票行数
  5. バラ数 - バラ個数
  6. ケース換算 - バラをケースに換算
  7. PL換算 - パレット換算数
  8. 容積換算m³ - 総容積
  9. 重量換算Kg - 総重量

🔢 表示モード切替

📊 全データ集計から見た特性

以下の項目の平均・最大・最小を算出:

📦 ケース寸法推定

容積と重量データから標準的なケースサイズを推定:

推定ロジック: - 容積 = W × D × H - 重量情報も考慮 - 最も頻度の高い寸法を特定

📈 日別集計Chart

Windows Forms Chartコントロールで時系列グラフを描画:

2️⃣ 出荷単位別集計タブ

📊 集計の種類

集計名 説明 表示内容
出荷単位別集計1 日別×出荷単位のクロス集計 各日の出荷単位ごとの詳細データ
出荷単位別集計2 出荷単位の総合集計 全期間を通じた出荷単位別の合計
出荷単位別Chart チャート表示 3種類のグラフ表示モード

🔄 ソート機能

📊 出荷単位別Chart表示モード

表示モード SQL 表示項目
表示1 全出荷単位の集計 出荷日、出荷先数、アイテム数、行数
表示2 ケース単位のみ 出荷日、バラ数、ケース換算
表示3 特定出荷単位 選択した出荷単位の詳細推移

🎨 実数/比率表示切替

出荷単位別集計2では、実数値と全体比率(%)の切替表示が可能

3️⃣ ABC分析タブ

💡 ABC分析とは?
パレートの法則(80:20の法則)に基づき、重要度の高い商品や出荷先を特定する手法。 A(重要)、B(中程度)、C(低)の3ランクに分類します。

📊 分析対象の選択

分析軸 テーブル ランク列
アイテム集計 TABC010_アイテム集計 行数Iランク / バラ数Iランク
出荷先集計 TABC010_出荷先集計 行数Eランク / バラ数Eランク

📈 分析指標の選択

🎨 パレート図の構成

GDI+ を使用してPictureBoxに直接描画:

  1. X軸:アイテム数 or 出荷先数(累積)
  2. Y軸:累積出荷量(%)
  3. A/B/Cランクの境界線を表示
  4. 70%, 90%, 100% の基準線

📊 ABC分類基準(デフォルト)

ランク 累積比率 意味 対応策
A 0~70% 超重要商品/出荷先 最優先管理、在庫常備
B 70~90% 中程度の重要度 通常管理
C 90~100% 低頻度商品/出荷先 最小限の在庫

🔍 パレート図の描画手順

1. Bitmap生成(PictureBoxサイズ) 2. Graphics オブジェクト作成 3. 座標系の設定(原点移動、スケール変換) 4. X軸・Y軸の描画 5. データループ: - ランク判定(A/B/C) - 累積値計算 - 線分描画 6. 基準線描画(YA70, YB90, YC100) 7. ラベル配置 8. PictureBoxに表示

🎨 Chart表示共通機能

📊 ChartData読込処理

ChartData読込(MySQL)メソッド:

📈 Chart表示処理

Chart表示()メソッド:

  1. ChartAreaのクリア
  2. Series(系列)のクリア
  3. DataTableから系列を動的生成
  4. 各系列にデータポイントを追加
  5. 凡例の設定
  6. 軸の設定

⚙️ Chart設定

設定項目 内容
ChartType Line(折れ線グラフ)
凡例位置 右側(Right)
軸ラベル X軸: 日付, Y軸: 数量
マーカー Circle(丸)

💾 データベースアクセス

主要なSQLクエリパターン

1. 日別集計の取得

SELECT T230_日別集計.* FROM T230_日別集計;

2. 出荷単位別集計の取得(日別ソート)

SELECT T330_日別出荷単位別集計.* FROM T330_日別出荷単位別集計 ORDER BY T330_日別出荷単位別集計.出荷日, T330_日別出荷単位別集計.出荷単位;

3. 出荷単位別の総合集計

SELECT T330_日別出荷単位別集計.出荷単位, Sum(T330_日別出荷単位別集計.出荷先数) AS 出荷先数, Sum(T330_日別出荷単位別集計.アイテム数) AS アイテム数, ... FROM T330_日別出荷単位別集計 GROUP BY T330_日別出荷単位別集計.出荷単位;

4. ABC分析データ(アイテム・行数基準)

SELECT TABC010_アイテム集計.アイテム, TABC010_アイテム集計.行数, TABC010_アイテム集計.行数累計, TABC010_アイテム集計.行数累計比, TABC010_アイテム集計.行数順位, TABC010_アイテム集計.行数Iランク FROM TABC010_アイテム集計 ORDER BY TABC010_アイテム集計.行数順位;

🔗 接続文字列

Provider=Microsoft.ACE.OLEDB.12.0;Data Source={MyDB}

使用しているテーブル

テーブル名 説明 使用箇所
T130_全出荷集計 全期間の総合集計 全データ集計タブ
T230_日別集計 日ごとの集計データ 全データ集計タブ、日別Chart
T330_日別出荷単位別集計 日別×出荷単位のクロス集計 出荷単位別集計タブ
TABC010_アイテム集計 商品別ABC分析データ ABC分析タブ
TABC010_出荷先集計 出荷先別ABC分析データ ABC分析タブ

🎯 主要メソッド一覧

フォーム制御

メソッド名 説明
Form1_Load フォーム初期化時の処理
- ファイル確認
- 全データ集計
- 特性分析
- ケース寸法推定
- Chart初期設定
tera計算1_従来計算Tc_SelectedIndexChanged タブ切替時の処理
- 各タブの初回表示チェック
- 必要に応じてデータ読込

全データ集計タブ

メソッド名 説明
全データ集計() T230_日別集計を読込み、集計表示
- 実数 or 比率の切替対応
- 合計行の算出
全データ集計から見た特性() ケース入数、容積、重量等の平均・最大・最小を算出
ケース寸法推定() 容積データから標準的なケース寸法(W×D×H)を推定
日別集計Chart初期設定() 日別推移のChart初期表示

出荷単位別集計タブ

メソッド名 説明
出荷単位別集計1() 日別×出荷単位のクロス集計を表示
- 日別ソート or 出荷単位ソート
出荷単位別集計2() 出荷単位の総合集計
- GROUP BY 出荷単位
- 実数 or 比率表示
出荷単位別集計Chart初期設定() 出荷単位別の推移Chart表示

ABC分析タブ

メソッド名 説明
ABC_Data作成() AccessマクロでABC分析テーブルを作成
- CreateObject("Access.Application")
- appAccess.Run("ABC分析開始")
ABCデータDgv表示() ABC分析結果をDataGridViewに表示
- アイテム集計 or 出荷先集計
- 行数 or バラ数基準
ABCパレート図作成() GDI+でパレート図を描画
- A/B/Cランクの可視化
- 累積曲線の表示

Chart共通機能

メソッド名 説明
ChartData読込(MySQL) SQLクエリでデータを取得し、作業Dgvに格納
Chart表示() 作業DgvからChartコントロールにデータをバインド
- 系列の動的生成
- データポイント追加
- 凡例・軸の設定
GetData() ChartのDataSourceとしてDataSetを返す
※現在は未使用

DataGridView操作

メソッド名 説明
作業Dgv読込1(MyTable, MySQL) SQLで取得したデータを作業用のDataGridViewに格納
Dgv書式(Dgv名, 列数, 行数, 表Type) DataGridViewの列・行を作成し、書式を設定
- セルスタイル(中央/右揃え)
- 数値フォーマット(N0, N1)
Dgv書式2(Dgv名) より柔軟な書式設定
- 列数・行数を自動判定
- 数値/文字列の自動判定
Dgv_ABCデータ書式(Dgv名) ABC分析専用のDataGridView書式設定

🔄 処理フローの詳細

全データ集計の処理フロー

1️⃣ フォーム読込
Form1_Load イベント発火
⬇️
2️⃣ ファイル確認
ファイル確認() - Tera計算Dataフォルダの検証
⬇️
3️⃣ 全データ集計
全データ集計() - T230_日別集計を読込
⬇️
4️⃣ 特性分析
全データ集計から見た特性() - 平均・最大・最小算出
⬇️
5️⃣ 寸法推定
ケース寸法推定() - W×D×Hの推定
⬇️
6️⃣ Chart初期設定
日別集計Chart初期設定() - 時系列グラフ表示

ABC分析の処理フロー

1️⃣ 計算開始ボタンクリック
ユーザーが「ABC分析計算開始」ボタンをクリック
⬇️
2️⃣ Accessマクロ実行
ABC_Data作成() - Accessの「ABC分析開始」マクロを実行
⬇️
3️⃣ 結果読込
ABCデータDgv表示() - TABC010テーブルからデータ取得
⬇️
4️⃣ パレート図描画
ABCパレート図作成() - GDI+で累積曲線を描画

🎨 GDI+ によるパレート図描画の詳細

描画手順

' 1. Bitmap生成 Dim img As New Bitmap(ABCパレートPb.Width, ABCパレートPb.Height) Dim g As Graphics = Graphics.FromImage(img) ' 2. 背景を白で塗りつぶし g.FillRectangle(Brushes.White, 0, 0, img.Width, img.Height) ' 3. 原点を左下に移動 g.TranslateTransform(img.Width * 0.1, img.Height * 0.9) ' 4. 座標範囲の設定 Dim xMax = Int(img.Width * 0.8) Dim yMax = Int(img.Height * 0.9) ' 5. 軸の描画 g.DrawLine(Pens.Blue, xMin, 0, xMax, 0) ' X軸 g.DrawLine(Pens.Blue, 0, yMin, 0, yMax) ' Y軸 ' 6. データループで累積グラフ描画 For i = 0 To DataCount Rank = Dgv.Item(5, i).Value ' ランク取得 K = Dgv.Item(1, i).Value ' 数量取得 ' ランク別に累積値を加算 If Rank.Contains("_A") Then YA70 += K : XA70 += 1 ElseIf Rank.Contains("_B") Then YB90 += K : XB90 += 1 End If ' 線分描画 g.DrawLine(Pens.Black, x1, -y1, x2, -y2) Next ' 7. 基準線描画(70%, 90%, 100%) ' 8. ラベル配置 ' 9. PictureBoxに表示 ABCパレートPb.Image = img

ランク判定ロジック

条件 ランク 処理
Rank.IndexOf("_A") >= 0 A YA70累積, XA70累積
Rank.IndexOf("_B") >= 0 B YB90累積, XB90累積
Rank.IndexOf("_C") >= 0 C YC100累積, XC100累積

⚙️ メモリー管理

ガベージコレクションの明示的呼び出し

各処理の最後に以下を実行してメモリーを解放:

Call GC.Collect() Call GC.WaitForPendingFinalizers()

Dispose処理

⚠️ メモリー管理の注意点
Chart表示や大量のDataGridView操作を伴うため、 各処理後に必ずGC.Collect()を呼び出してメモリーリークを防止しています。

🔧 主要な変数とチェックフラグ

グローバル変数(K1.vbから参照)

変数名 型 説明
全データ発送先数 Double 実際の発送先総数
全データアイテム数 Double 実際の商品総数
全データ延べ発送先数 Double 日別の延べ発送先数合計
全データ延べアイテム数 Double 日別の延べアイテム数合計
全データ行数 Double 総伝票行数
全データバラ数 Double 総バラ個数
全データケース換算 Double 総ケース数
全データPL換算 Double 総パレット数
全データ容積換算 Double 総容積(m³)
全データ重量換算 Double 総重量(kg)

チェックフラグ

フラグ名 説明
Chk1 全データ集計の初回読込完了フラグ
Chk2 ABC分析データ作成完了フラグ
全データ集計Chk 全データ集計タブの初回表示チェック
出荷単位別集計Chk 出荷単位別集計タブの初回表示チェック
ABC分析Chk ABC分析タブの初回表示チェック

📊 実装されている分析手法

1. 基本統計分析

2. 時系列分析

3. ABC分析(パレート分析)

4. クロス集計

🆚 EIQ分析との違い

項目 従来計算 EIQ分析
分析視点 時系列、ABC、単位別 Entry×Item の組合せ
難易度 初心者向け 中級~上級者向け
グラフ Chart Control使用 Chart + GDI+ 手動描画
処理速度 高速 やや時間がかかる
分析深度 基本統計 詳細な出荷パターン分析
用途 概要把握、日次報告 倉庫設計、レイアウト最適化

💡 活用シーン

従来計算が適している場面

EIQ分析が適している場面

⚠️ 制限事項と注意点

データ量による制限

データ形式の要件

Accessマクロの依存

🔗 関連ファイル

ファイル名 説明 関係
Tera計算_K1.vb 共通変数・関数モジュール Public変数、ファイル確認処理を使用
Tera計算_EIQ.vb EIQ詳細分析フォーム より高度な分析を提供
Tera計算_参考メニュー.vb メニュー画面 このフォームを起動
SQLによるEIQ分析.accdb Accessデータベース データ格納、マクロ実行

🎓 コーディングスタイル

特徴

命名規則

要素 規則 例
DataGridView 〇〇Dgv T230_日別集計Dgv
Chart 〇〇Chart 日別集計Chart
ボタン 〇〇Bt 出荷単位別集計Bt
ラジオボタン 〇〇Rb 全データ集計_実数Rb
チェックボックス 〇〇Cb 詳細分析日指定Cb