===================================================
APEX
庫存基本檔 tblStock - 舊料號找新料號
( PartCode 新料號 )
( 可以在 PartRule 作字串處理,切出舊料號, 一個舊料號可能有兩個新料號(+判斷?) )
訂貨單 tblOrder - 找 訂單號的 最新訂單版本中 定了哪些 料號
( OderNo 訂貨單號 )
( table 裡面有切割出幾個欄位可以跟 FoxPro 的資料作關聯 )
( FormVersion 單據版本 )
( 可以與 OderNo 結合,)
訂貨單細項 tblOrderDet - 從訂單號去找說 定哪些料號的版本, 數量, 客戶規格是什麼
( 與 訂貨單 作關聯 OrderNo)
( 去撈說該筆訂單 有定哪些 料號 PartCode (成品 PdtCode )
與 (tblOrderDet, tblBOMPdt ) PdtVersion ,
該料號定了多少的 數量 Qty )
選配基本 tblComb - 可以從 選配編號( CombCode ) 去找說
產品編號( PdtCode ) 與 客戶ID( CustID)
(可以直接從選配細項找選配料號,是否這邊可以不作?)
(選配編號如何編碼?)
()
選配細項 tblCombDet - 從 製程編號( ProcCode ) 去找說 有哪些選配料號( CombPartCode )
================================================================
FoxPro
mmac.dbf - 使用者輸入 製造日期, 客戶名稱 作為篩選條件
( 製造日期 : Trndate )
( 舊料號 : part ) <tblStock.PartRule>
(訂貨單號 : Mark + Ordno + Trndate) <tblOrder.OderNo: CustOrderNo + OrderDate >
廠商商標+訂單號+訂單日期 廠商商標訂單號+訂單日期
訂貨單號可以查找資料,舊料號有意義?
======================================================
1.以"日期範圍"查詢 各物料總需求量 ( 訂單日期 )
2.以"客戶範圍"(AAA~ZZZ之類)查詢 各物料總需求量 ( Mark )
3.顯示各表單關心的資訊 ( 分開 or join )
目標 : 統計各材料 使用數 基數 去計算 用量
[tblBOMPart 材料] : 使用數 PartNum / 基數 CardNum = 用量
4.必須包含各細項物料的詳細資訊表單
與各物料統計資訊的表單
5.報表能夠列印,能夠轉 Excel
6.訂單 要抓最新版本的 (是說 FoxPro檔案 並不會隨著 tblOrder 改單版本有所變更?)
Status = 2 訂單已被核對
FormVersion = MAX 訂單為最新版本
去撈 該客戶在定單中所訂購的 產品量 ( 成品量 )
物料不一定是最新版本
[tblBOMPart 材料] "PdtKey" "PdtVersion" "ProcKey" "ProcCode" "PartCode"
[tblBOMPdt 成品] "PdtKey" "PdtVersion"
[tblBOMProc 製程] "PdtKey" "PdtVersion" "ProcKey" "ProcCode"
[tblOrder 訂單] "OrderNo"
一個 [訂單] -> 多個 [訂單細項], 一個 [訂單細項] -> 一個 [成品]
一個 [成品] -> 多個 [製程], 一個 [製程] -> 多個 [材料]
7.[tblOrderDet 訂單細項] [tblBOMPdt 成品]
以 "PdtCode"與"PdtVersion" 作關聯
* tblBOMPdt.PdtCode = tblOrderDet.PartCode
'1.訂單 + 訂單Det + Pdt
SELECT Odet.OrderNo,Ord.OrderDate,
Ord.CustID, Odet.PartCode,
Odet.PdtVersion , Odet.Qty
FROM tblOrder Ord, tblOrderDet Odet, tblBOMPdt Pdt
WHERE Ord.OrderNo = Odet.OrderNo
AND Odet.PartCode = Pdt.PdtCode
AND Odet.PdtVersion = Pdt.PdtVersion
8.[tblBOMPdt 成品] [tblBOMProc 製程]
以 "pdt.PdtCode"= "proc.ProcCode" 與"PdtKey"與"PdtVersion" 作關聯
撈出"ProcKey"
透過"製程型號"去找材料 ( 原料,半成品 )
* PdtCode = ProcCode ( 有例外 要問 )
'2.Pdt + Proc
'撈出不同產品的 製程型號 ProcCode
SELECT Proce.ProcCode, Proce.ProcKey, Proce.PdtKey,
Proce.PdtVersion, Proce.ProcNum
FROM tblBOMPdt Pdt, tblBOMProc Proce
WHERE Pdt.PdtCode = Proce.ProcCode
AND Pdt.PdtKey = Proce.PdtKey
AND Pdt.PdtVersion = Proce.PdtVersion
9.[tblBOMProc 製程] [tblBOMPart 材料]
以 "PdtKey"與"PdtVersion"與"ProcCode"與"ProcKey"與 作關聯
撈出 "PartCode" 主鍵
'3.Proc + Part
'以各材料分類 , 去統計 總使用量
SELECT Part.PartCode, Part.PdtVersion, Part.PdtKey,
Proce.ProcCode, Part.ProcKey,
SUM( Proce.ProcNum * ( Part.PartNum / Part.CardNum * 1000 ) )AS PartCost
FROM tblBOMProc Proce, tblBOMPart Part
WHERE Proce.PdtKey = Part.PdtKey
AND Proce.PdtVersion = Part.PdtVersion
AND Proce.ProcCode = Part.ProcCode
AND Proce.ProcKey = Part.ProcKey
GROUP BY Part.PartCode, Part.PdtVersion,
Part.PdtKey, Proce.ProcCode, Part.ProcKey
10. [tblComb 選配] [tblOrderDet 訂貨單細項] + [FoxPro 檔案]
以"CustSpec 客戶規格"與"Mark" 作關聯
去撈 tblComb.CombCode
11.需要呈現的資料
訂單號
訂單日期
客戶規格
客戶
成品內容 "PartCode"
材料耗用數量 "使用量 = CardNum / PartNum "
以原物料的 PartCode 去排序
所有原物料細項
所有原物料統計
( 使用數 基數 之間的計算 )
*成品 Pdt ( 成品 ), 製程 Proc ( 半成品 ), 材料 Part ( 原料 )
*單位換算 製程 : 公克 (每個成品所需耗用 製程 中的半成品多少公克 )
材料 : ( 在每個製程中 所佔的百分比 ( PartNum(公斤) / CardNum(公克) ) )
*好像 使用數 = 製程的使用數 X 材料在製程中 所佔的百分比
( 製程 .ProcNum X 材料.PartNum(公斤) / 材料.CardNum(公克) )
( tblBOMProc.ProcNum * ( tblBOMPart.PartNum / tblBOMPart.CardNum * 1000 )) AS ProcCost
*統計 每個材料的使用量總合
SUM( ProcCost ) SELF JOIN
-----------------------------------------------------------
分成幾個 Table
用 JOIN ON 交集條件
來結合
1.訂單 + 訂單Det + Pdt
2.Pdt + Proc
3.Proc + Part (SUM)
=========================================================
'Stock 與 mmac 以舊料號(Stock.PartRule = mmac.part)去找 新料號 ( Stock.PartCode )
'mmac 與 訂單 與 訂單Det, Pdt 以
Mark + Ordno + Trndate
'tblOrder.OderNo : CustOrderNo + OrderDate
'取訂單 已核對過 的 Status = 2
'以核對訂單 取 版本最新 FormVersion = MAX
去找 訂單號, 撈 訂單料號
'mmac,訂單Det 以 mark = Det.CustID,
'各材料在該 製程 的 使用量
SELECT ( tblBOMProc.ProcNum * ( A1.PartNum / A1.CardNum * 1000 ) )AS ProcCost
FROM tblBOMPart As A1, tblBOMProc
WHERE A1.ProcCode=tblBOMProc.ProcCode
AND A1.ProcKey=tblBOMProc.ProcKey
AND A1.PdtKey=tblBOMProc.PdtKey
AND A1.PdtVersion=tblBOMProc.PdtVersion
'以各材料分類 , 去統計 總使用量
SELECT A1.PartCode,
SUM( tblBOMProc.ProcNum * ( A1.PartNum / A1.CardNum * 1000 ) )AS PartCost
FROM tblBOMPart As A1, tblBOMProc
WHERE A1.ProcCode=tblBOMProc.ProcCode
AND A1.ProcKey=tblBOMProc.ProcKey
AND A1.PdtKey=tblBOMProc.PdtKey
AND A1.PdtVersion=tblBOMProc.PdtVersion
GROUP BY A1.PartCode
'撈訂單中有哪些成品( PartCode )被訂購,訂購多少數量( Qty )
'結合 tblBOMPdt
'結合 tblBOMPdt
SELECT Odet.OrderNo,Ord.OrderDate,
Ord.CustID, Odet.PartCode,
Odet.PdtVersion , Odet.Qty
FROM tblOrder Ord, tblOrderDet Odet, tblBOMPdt Pdt
WHERE Ord.OrderNo = Odet.OrderNo
AND Odet.PartCode = Pdt.PdtCode
AND Odet.PdtVersion = Pdt.PdtVersion
再來可能就要找地點相關資料
======================================================
邏輯架構
'textbox 條件輸入 ( 123:date, 456:cust)
if ( box1 not null )
do box1SQL
else if ( box2 not null ) && ( box3 not null )
do box2SQL & box3SQL
else if ( box3 not null )
do box3SQL
else
do
else
msg( box1 null )
======================================================
介面設計
方案一
1. 登入介面 ( 需不需要作 權限程度 )
2. 選單介面 ( 需不需要作 有哪些項目 )
3. 篩選介面 ( 各條件篩選 資料檢查 )
4. 報表介面 ( 呈現Table 轉Excel 列印 )
要有物料細項 Table ( 物料編號, 品名, 預估用量, 單位)
要有物料各項相關統計 Table ( 物料編號, 品名, 總預估用量, 單位)
可以選擇 要轉的 或 要列印的 Table
方案二
1. 登入介面
2. 選單介面 ( 需不需要作 有哪些項目 )
3. 篩選 與 報表 再同一畫面
如果這樣 Table 應該要怎麼切
應該如何呈現
沒有留言:
張貼留言