📋 概述
本檔案為用於計算散裝出貨(揀貨出貨)時,貨櫃(摺疊貨櫃、循環物流箱)需求數量的公用軟體。該程式會分析各出貨地的散裝物量,並算出最佳的貨櫃尺寸與需求數量。
主要用途:
- 計算散裝出貨時所需的貨櫃數量
- 依出貨地・品項別進行物量分析
- 最佳化選擇貨櫃尺寸(31型、40型、51型、60型)
- 考量裝填率後計算實用容積
- 依日期・出貨地進行 EIQ 分析
何謂散裝出貨: 不以整箱為單位出貨,而是將箱子拆開並僅揀取所需數量進行出貨的方式。常用於針對零售店舖的多品種少量配送。
🔧 依賴關係
Imports System.Data.OleDb
Imports Microsoft.Office.Interop.Access
Imports Microsoft.Office.Interop.Access
使用技術:
- OleDb: 連接 Microsoft Access 資料庫
- Access Interop: 操作 Access 資料庫
- SQL 查詢: 進行資料的擷取與彙總處理
🎯 主要功能
1. 貨櫃容積計算
- 支援 4 種貨櫃尺寸(31型、40型、51型、60型)
- 計算考量裝填率後的實用容積
- 使用使用者指定的裝填率進行計算
2. 出貨資料分析
- 依出貨日彙總物量
- 依出貨地彙總散裝物量
- 依品項計算出貨容積
- 依 EIQ 等級進行分析
3. 貨櫃數計算
- 計算各出貨地所需的貨櫃數量
- 計算總貨櫃數
- 計算棧板裝載數量
- 比較與評估多種貨櫃尺寸
4. EIQ 分析
- 彙總 I 等級(品項數)
- 彙總 E 等級(出貨地數)
- 分析 Q 等級(數量)
📦 支援的貨櫃尺寸
| 型號 | 內徑容積 (m³) | 一般用途 | 特色 |
|---|---|---|---|
| 31型 | 0.0329 m³ (32.9公升) | 小物品・少量揀貨 | 尺寸小,容易搬運 |
| 40型 | 0.0372 m³ (37.2公升) | 標準揀貨 | 中型尺寸,通用性高 |
| 51型 | 0.05 m³ (50公升) | 中量揀貨 | 大型尺寸,容量大 |
| 60型 | 0.061 m³ (61公升) | 大量揀貨 | 最大尺寸,需注意重物 |
何謂 Oricon (摺疊貨櫃): 摺疊貨櫃的俗稱。因使用後可摺疊回收,因此作為物流效率極高的循環物流箱被廣泛使用。
🔍 主要方法詳細說明
1. 表單載入處理
Private Sub Tera計算參考_EIQFrom_Load(sender As Object, e As EventArgs)
初始化處理:
- 顯示使用期限與版權
- 確認必要檔案是否存在
- 設定資料庫路徑
- 顯示貨櫃容器 Dgv
- 擷取出貨貨櫃物量資料
- 顯示出貨日別彙總 Dgv
- 計算指定出貨日的容積彙總
- 算出出貨貨櫃計算容積
- 建立出貨日下拉選單
2. 開始貨櫃容積計算
Private Sub 貨櫃容積計算_開始_Click(sender As Object, e As EventArgs)
處理流程:
- 輸入驗證
- 確認是否已選擇出貨日
- 檢查資料不足的日期(2022/05/14)
- 資料擷取・彙總
- 擷取出貨貨櫃物量
- 指定出貨日的容積彙總
- 顯示出貨地別散裝容積
- 出貨地別貨櫃數彙總
- EIQ 分析
- 算出 I 等級各品項數
- 算出 E 等級各出貨地數
- 顯示 EIQ 結果
- 貨櫃數計算
- 算出貨櫃數量
- 計算棧板裝載數量
- 視覺回饋
- 變更背景顏色(LightGray ⇔ GreenYellow)
資料不足時的處理: 由於 2022/05/14 的資料不足,因此選擇時將顯示錯誤訊息並中止計算。
3. 出貨貨櫃計算容積
Private Sub 出貨貨櫃計算容積()
計算邏輯:
計算容積 = 內徑容積 × (裝填率 / 100)
計算範例(40型,裝填率 80% 的情況):
內徑容積: 0.0372 m³
裝填率: 80%
計算容積 = 0.0372 × 0.8 = 0.02976 m³
→ 四捨五入後為 0.0298 m³
裝填率: 80%
計算容積 = 0.0372 × 0.8 = 0.02976 m³
→ 四捨五入後為 0.0298 m³
4. 建立出貨日下拉選單
Private Sub 建立出貨日Cb()
處理內容:
- 從 T230_日別彙總 資料表取得出貨日列表
- 將出貨日新增至下拉選單
- 預設選擇散裝數量最多的出貨日
- 將背景顏色設定為 PeachPuff(淺橘色)
自動選擇: 透過自動選擇散裝出貨最多的日期,優先顯示最需要計算的日期。
💾 資料庫處理
資料庫架構
資料庫: 使用SQL的EIQ分析.accdb
位置: Dat儲存Path & "\使用SQL的EIQ分析.accdb"
位置: Dat儲存Path & "\使用SQL的EIQ分析.accdb"
主要資料表
| 資料表名稱 | 說明 |
|---|---|
| T000_出貨資料 | 原始資料(全出貨資料) |
| T400_EIQ加工資料 | 為了進行 EIQ 分析加工後的資料 |
| T230_日別彙總 | 日別的彙總資料 |
| TF10_出貨貨櫃物量 | 散裝出貨的貨櫃物量(計算結果) |
| My_貨櫃規格 | 貨櫃的規格主檔資料 |
擷取出貨貨櫃物量
Private Sub 出貨貨櫃的出貨物量擷取()
處理步驟:
- 刪除既有的查詢與資料表(QF10_*, TF10_*)
- 分 3 個階段執行 SQL 查詢
SQL 查詢的詳細說明
步驟 1: 合併出貨區分
CREATE VIEW QF10_1 AS
SELECT T400_EIQ加工資料.*, T000_出貨資料.出貨區分
FROM T400_EIQ加工資料
LEFT JOIN T000_出貨資料
ON T400_EIQ加工資料.列序號 = T000_出貨資料.列序號;
SELECT T400_EIQ加工資料.*, T000_出貨資料.出貨區分
FROM T400_EIQ加工資料
LEFT JOIN T000_出貨資料
ON T400_EIQ加工資料.列序號 = T000_出貨資料.列序號;
將出貨區分合併至 EIQ 加工資料。
步驟 2: 彙總散裝出貨
CREATE VIEW QF10_2 AS
SELECT
出貨區分, 出貨日, B列E等級, B列I等級,
品項, 出貨地,
SUM(散裝出貨的列數) AS 列數,
SUM(散裝出貨的散裝數) AS 散裝數,
SUM(散裝出貨的箱換算) AS 箱換算,
SUM(散裝出貨的PL換算) AS PL換算,
SUM(散裝出貨的容積換算) AS 容積換算,
SUM(散裝出貨的重量換算) AS 重量換算
FROM QF10_1
GROUP BY 出貨區分, 出貨日, B列E等級, B列I等級, 品項, 出貨地
HAVING 出貨區分="散裝_出貨貨櫃" AND SUM(散裝出貨的散裝數) > 0;
SELECT
出貨區分, 出貨日, B列E等級, B列I等級,
品項, 出貨地,
SUM(散裝出貨的列數) AS 列數,
SUM(散裝出貨的散裝數) AS 散裝數,
SUM(散裝出貨的箱換算) AS 箱換算,
SUM(散裝出貨的PL換算) AS PL換算,
SUM(散裝出貨的容積換算) AS 容積換算,
SUM(散裝出貨的重量換算) AS 重量換算
FROM QF10_1
GROUP BY 出貨區分, 出貨日, B列E等級, B列I等級, 品項, 出貨地
HAVING 出貨區分="散裝_出貨貨櫃" AND SUM(散裝出貨的散裝數) > 0;
依品項・出貨地彙總散裝出貨資料。
步驟 3: 資料表化
SELECT QF10_2.*
INTO TF10_出貨貨櫃物量
FROM QF10_2;
INTO TF10_出貨貨櫃物量
FROM QF10_2;
將檢視表存為資料表。
📊 顯示・彙總功能
1. 顯示貨櫃容器 Dgv
Sub 貨櫃容器Dgv顯示()
顯示內容:
- 貨櫃型號
- 外徑(寬・深・高)
- 內徑(寬・深・高)
- 外徑容積
- 內徑容積
- 摺疊時的尺寸
- 摺疊面積
- 備註
2. 顯示出貨日別彙總 Dgv
Sub 出貨日別彙總Dgv顯示()
顯示項目:
- 出貨日
- 總列數
- 散裝數
- 箱數換算
- 容積換算
- 其他彙總數值
3. 顯示指定出貨日_出貨地別散裝容積 Dgv
Private Sub 指定出貨日_出貨地別散裝容積Dgv顯示()
內容:
- 所選出貨日的各出貨地資料
- 各出貨地的散裝容積
- 單一品項的詳細資訊
- EIQ 等級資訊
4. 顯示出貨地別_貨櫃數彙總 Dgv
Private Sub 出貨地別_貨櫃數彙總Dgv顯示()
計算・顯示內容:
- 各出貨地的總容積
- 所需貨櫃數
- 小數點處理(無條件進位)
- 實際的貨櫃裝填率
所需貨櫃數 = CEILING(總容積 / 貨櫃計算容積)
5. 顯示出貨貨櫃容積 EIQ Dgv
Private Sub 出貨貨櫃容積EIQDgv顯示()
顯示 EIQ 分析結果:
- 各 E 等級資料
- 各 I 等級資料
- Q 等級(數量)的分析
- ABC 分析結果
📈 EIQ 分析功能
何謂 EIQ 分析:
- E (Entry): 出貨地數(訂單數)
- I (Item): 品項數(SKU 數)
- Q (Quantity): 數量(出貨量)
1. I 等級各品項數
Private Sub I等級各品項數()
計算內容:
- 各 I 等級(A, A1, A2, B, B1, B2, C)的品項數
- 品項數的分佈分析
- 佔總品項數的比例
2. E 等級各出貨地數
Private Sub E等級各出貨地數()
計算內容:
- 各 E 等級(A, A1, A2, B, B1, B2, C)的出貨地數
- 出貨地的分佈分析
- 佔總出貨地數的比例
EIQ 等級的含義
| 等級 | 說明 | 特性 |
|---|---|---|
| A 等級 | 高頻率・大量 | 重點管理對象 |
| A1 等級 | A 等級的前段 | 最重要 |
| A2 等級 | A 等級的後段 | 重要 |
| B 等級 | 中頻率・中量 | 標準管理 |
| B1 等級 | B 等級的前段 | 稍微重要 |
| B2 等級 | B 等級的後段 | 標準 |
| C 等級 | 低頻率・少量 | 簡易管理 |
🧮 貨櫃數計算
顯示貨櫃容積計算貨櫃數 Dgv
Private Sub 貨櫃容積計算貨櫃數Dgv顯示()
計算邏輯:
- 彙總各出貨地的總容積
- 算出所需貨櫃數
需求數量 = CEILING(總容積 / 貨櫃計算容積)
- 小數點處理
- 一律無條件進位(為防止短缺)
- 未滿 1 個以 1 個計算
貨櫃 PL 裝載數計算
Private Sub 貨櫃PL裝載數計算()
計算內容:
- 每一棧板的貨櫃裝載數量
- 所需棧板數
- 評估裝載效率
棧板裝載: 透過將貨櫃堆疊在棧板上搬運,可提升搬運效率。一般情況下一塊棧板會裝載多個貨櫃。
🎨 UI 元件
輸入控制項
| 控制項 | 說明 | 初始值 |
|---|---|---|
| 出貨日Cb | 出貨日選擇下拉選單 | 散裝數最多的日期 |
| 散裝出貨_貨櫃選擇Cb | 貨櫃型號選擇 | 40型(標準) |
| 出貨貨櫃裝填率Tb | 裝填率(%) | 80% |
顯示用 TextBox
| 控制項 | 顯示內容 |
|---|---|
| 內徑容積Tb | 貨櫃的內徑容積(m³) |
| 出貨貨櫃計算容積Tb | 考量裝填率後的計算容積(m³) |
DataGridView 列表
- 貨櫃容器Dgv: 貨櫃規格主檔資料
- 出貨日別彙總Dgv: 日別出貨資料彙總
- 指定出貨日_出貨地別散裝容積Dgv: 出貨地別詳細資訊
- 出貨地別_貨櫃數彙總Dgv: 貨櫃數計算結果
- 出貨貨櫃容積EIQDgv: EIQ 分析結果
- 貨櫃容積計算貨櫃數Dgv: 總貨櫃數
- 作業Dgv: 暫存作業用
按鈕
- 貨櫃容積計算_開始: 執行計算處理
- 關閉Bt: 關閉表單
RadioButton
- 尺寸說明Rb: 切換顯示貨櫃尺寸圖
PictureBox
- 出貨貨櫃Pb: 顯示貨櫃圖片
- Oricon尺寸.jpg(尺寸說明圖)
- Oricon.gif(外觀圖)
🎯 視覺回饋
變更背景顏色
執行計算時,結果顯示區的背景顏色會發生變化:
| 狀態 | 背景顏色 | 意義 |
|---|---|---|
| 初始狀態 | LightGray (淺灰色) | 未計算 |
| 計算完成 | GreenYellow (黃綠色) | 已計算・顯示結果中 |
If 貨櫃數計算結果chk = 0 Then
貨櫃數計算結果Panel.BackColor = Color.LightGray
GroupBox23.BackColor = Color.LightGray
貨櫃數計算結果chk = 1
Else
貨櫃數計算結果Panel.BackColor = Color.GreenYellow
GroupBox23.BackColor = Color.GreenYellow
貨櫃數計算結果chk = 0
End If
貨櫃數計算結果Panel.BackColor = Color.LightGray
GroupBox23.BackColor = Color.LightGray
貨櫃數計算結果chk = 1
Else
貨櫃數計算結果Panel.BackColor = Color.GreenYellow
GroupBox23.BackColor = Color.GreenYellow
貨櫃數計算結果chk = 0
End If
出貨日下拉選單的顏色
- PeachPuff (淺橘色): 提升辨識度的背景色
🔄 處理流程全圖
┌─────────────────────────────────────┐
│ 表單載入 │
└──────────┬──────────────────────────┘
│
├→ 顯示期限・版權
├→ 確認檔案是否存在
├→ 設定資料庫路徑
├→ 顯示貨櫃容器Dgv
├→ 擷取出貨貨櫃物量
├→ 顯示出貨日別彙總Dgv
├→ 算出貨櫃計算容積
└→ 建立出貨日Cb
│
▼
┌─────────────────────────────────────┐
│ 選擇出貨日 │
└──────────┬──────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 點擊貨櫃容積計算開始按鈕 │
└──────────┬──────────────────────────┘
│
├→ 輸入驗證(檢查出貨日、資料不足)
│
▼
┌─────────────────────────────────────┐
│ 資料擷取・彙總 │
└──────────┬──────────────────────────┘
│
├─ 擷取出貨貨櫃物量
│ └→ 執行SQL(3階段)
│
├─ 指定出貨日容積彙總
├─ 顯示出貨地別散裝容積Dgv
└─ 顯示出貨地別貨櫃數彙總Dgv
│
▼
┌─────────────────────────────────────┐
│ EIQ 分析 │
└──────────┬──────────────────────────┘
│
├─ 算出 I 等級各品項數
├─ 算出 E 等級各出貨地數
└─ 顯示 EIQ 結果Dgv
│
▼
┌─────────────────────────────────────┐
│ 貨櫃數計算 │
└──────────┬──────────────────────────┘
│
├─ 顯示貨櫃數Dgv
│ └→ 總容積 / 計算容積 → 無條件進位
│
└─ 貨櫃 PL 裝載數計算
│
▼
┌─────────────────────────────────────┐
│ 結果顯示・視覺回饋 │
└──────────┬──────────────────────────┘
│
└→ 變更背景顏色(GreenYellow)
💡 應用場景
1. 每日營運
- 算出明日出貨所需的貨櫃數量
- 貨櫃的準備・配置規劃
- 決定揀貨區的佈局
2. 計畫擬定
- 估算所需貨櫃總數
- 評估貨櫃尺寸的最佳化
- 投資計畫(添購貨櫃的數量)
3. 分析・改善
- 透過 EIQ 分析掌握物流特性
- 分析各出貨地的特性
- 擬定提升揀貨效率的方案
4. 模擬測試
- 變更裝填率時的影響分析
- 比較不同貨櫃尺寸的差異
- 確認旺季的作業處理能力
📊 DataGridView 設定
共通設定
- RowHeadersVisible = False: 隱藏列標題
- AllowUserToAddRows = False: 停用使用者新增資料列
- AutoSizeColumnsMode = AllCells: 自動調整欄寬
- AutoSizeRowsMode = AllCells: 自動調整列高
數值欄位設定
For j = 2 To 19
.Columns(j).DefaultCellStyle.Alignment = _
DataGridViewContentAlignment.MiddleRight
Next
.Columns(j).DefaultCellStyle.Alignment = _
DataGridViewContentAlignment.MiddleRight
Next
第 2 欄以後(數值資料)採靠右對齊顯示。
⚠️ 注意事項與錯誤處理
遇到資料不足時的處理
關於 2022/05/14 的資料:
由於此日期的資料不足,選擇時將顯示錯誤訊息。
由於此日期的資料不足,選擇時將顯示錯誤訊息。
If 出貨日Cb.Text = "2022/05/14" Then
MsgBox("資料不足。請選擇其他出貨日")
Exit Sub
End If
MsgBox("資料不足。請選擇其他出貨日")
Exit Sub
End If
輸入驗證
- 若未選擇出貨日,將中止處理程序
- 若未輸入裝填率,將跳過計算
計算時的注意事項
- 裝填率的合理性: 80~90% 為常見範圍。設為 100% 實際上難以作業
- 小數點處理: 一律無條件進位(防止短缺)
- 貨櫃尺寸: 需配合出貨地特性進行選擇
- 重量限制: 不僅要考量容積,也必須考量重量
🔗 相關模組
本公用軟體與以下 Tera 計算系統進行整合:
- T000_出貨資料: 原始資料的輸入來源
- T400_EIQ加工資料: EIQ 分析的基礎資料
- T3_3 包裝物量: 與包裝計算的整合
- T3_4 出貨空間: 與出貨空間計算的整合
💾 檔案・路徑結構
資料庫檔案
MyDB = Dat儲存Path & "\使用SQL的EIQ分析.accdb"
圖片檔案
MyPath = Environment.CurrentDirectory
Oricon尺寸.jpg: 尺寸說明圖
Oricon.gif: 外觀圖
Oricon尺寸.jpg: 尺寸說明圖
Oricon.gif: 外觀圖
軟體資料路徑
SoftDataPath = Dat儲存Path & "\SoftData"
📚 總結
T3_Uty2散裝出貨貨櫃計算.vb 是一款能精確計算散裝出貨所需貨櫃數量的專業工具。
主要特色
- ✅ 支援 4 種貨櫃尺寸(31型~60型)
- ✅ 考量裝填率後的實用容積計算
- ✅ 依出貨地・品項進行詳細分析
- ✅ 透過 EIQ 分析掌握物流特性
- ✅ 活用 SQL 達到高速的資料處理
- ✅ 提供視覺化的回饋功能
適用領域
- 零售業的散裝出貨(店舖配送)
- 揀貨中心的營運計畫
- 循環物流箱(Oricon)的需求量管理
- 物流成本的分析與降低
提升計算精確度的要點
- 基於實際經驗設定裝填率
- 因應出貨地特性選擇合適的貨櫃尺寸
- 透過定期的 EIQ 分析進行審視
實務上的建議: 計算結果為理論值。實際營運時,建議多準備 10~20% 的備用貨櫃。
📞 支援資訊
文件建立日期: 自動產生
目標檔案: T3_Uty2散裝出貨貨櫃計算.vb
語言: Visual Basic .NET (VB.NET)
總行數: 637行
核心技術: Windows Forms, Access Database, SQL, EIQ 分析