Tera計算_従来計算

メニューへ __jp eng tw ___ By 物流技術研究所

📄 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

📚 参考情報

参照しているWebサイト(コメント内)

関連技術