2011年6月30日 星期四

@CASE 1 <物料需求計算> ver-110702

重新構思一下
SQL部分
用一步一步的方式去連
看效能問題會不會解決
======================================

大致上完成

等待整理資料作成文件 , ppt, visio繪出流程圖
=====================================
防呆 & 功能加強 開始


介面
1.切開條件篩選 與 報表呈現 兩個 Form 是否必要
2.報表 有列印, 轉 excel 功能 ( 是否列印  也會同時作轉 Excel 動作 )
3.報表 有一個 原物料需求表 View, 一個 選配物料需求表 View, 是否有分開呈現的必要
4.防呆
5.中文顯示
待續..
=======================================
mmac -> tblFmmac ( part, mark, trndate, ordno )
1. tblStock -> tblFmmac 結合 OldPartCode ( PartCode, PartRule (mmac.spec)) to tblFmmac
2. tblOrd -> tblFmmac 結合 CustOrderNo = mark+ ordno ( OrderNo ) to tblOrd
3. tblOrdDet -> tblOrd 結合 OrderNo, PdtVersion ( 成品PartCode, Qty ) to tblOrdDet
4. tblBOMPdt -> tblOrdDet 結合 PartCode, Pdtversion ( PdtKey, PdtVersion ) to tblBOMPdt
5. tblBOMProc -> tblBOMPdt 結合 PdtKey, PdtVersion ( ProcKey, PdtKey, PdtVersion, ProcNum使用數 ) to tblBOMProc
6. tblBOMPart -> tblBOMProc 結合 PdtKey, PdtVersion, ProcKey ( PartCode,  PartNum/CardNum使用量)
                    7. -> tblStock 結合 PartCode ( OldPartCode, PartRule, Unit )
=========================================
還是很慢....可能是回圈太多
沒怎麼用JOIN
需要在試試看JOIN
=========================================
1. Order, OderDet, Pdt 撈出所有成品 PartCode, PdtKey, PdtVersion, Qty
SELECT ord.CustOrderNo,ord.OrderNo, orddet.PartCode, pdt.PdtKey, orddet.PdtVersion, orddet.Qty
FROM tblOrderDet orddet JOIN tblOrder ord ON ord.OrderNo = orddet.OrderNo
JOIN tblBOMPdt pdt ON orddet.PartCode = pdt.PdtCode AND orddet.PdtVersion = pdt.PdtVersion          

WHERE ord.CustOrderNo = 'AAA0063'

2. Pdt, Proce, Part 撈出所有材料 PdtKey, PdtVersion, ProcKey, 計算PartCost

select pro.PdtKey, pro.PdtVersion, pro.ProcKey, ( pro.ProcNum *(part.PartNum / part.CardNum * 1000)) as PartCost
from tblBOMProc pro
JOIN tblBOMPdt pdt ON pdt.PdtKey = pro.PdtKey AND pdt.PdtVersion = pro.PdtVersion
JOIN tblBOMPart part On part.Prockey = pro.Prockey AND part.PdtKey = pro.PdtKey AND part.PdtVersion = pro.PdtVersion

3. 1. & 2. 透過 PdtKey, PdtVersion 作連結
SELECT '" & tblFmmac.Rows.Item(i).Item("part").trim() & "' AS OldPartCode,
                  PartCode, PartRule, Unit 
FROM tblStock  
WHERE PartRule LIKE '%" & tblFmmac.Rows.Item(i).Item("part").trim() & "]'"


4.結合 Stock 撈 Unit, 
==========================================================
5. 選配 (以訂單細項的產品的 custSpec, 結合 custID 下去找)

'呼叫 CombClass 去建資料庫 (tblOrderDet JOIN Order, JOIN tblcombdet, JOIN tblStock)
        '從 orderno,  cdet.combcode = (ord.custId + '-' + odet.custspec)
        ' 去撈 品名 PartRule(兩次,預作切割), 選配料號 CombPartCode, 數量 CardNum, 單位Unit

select stock.partrule as OldPartCode ,stock.partrule as PartRule, cdet.*
from tblOrderdet odet JOIN tblorder ord on ord.orderno = odet.orderno
Join tblcombdet cdet on cdet.combcode = (ord.custId + '-' + odet.custspec)
Join tblStock stock on stock.partcode = cdet.combpartcode
WHERE  ord.CustID = 'AAA'
AND odet.custspec  = '0220-TIG'

'最後切第一個 OldPartCode 出來

========================================
@
因為回圈用兩個全域變數來宣告,
每次回圈跑的時候會忘了+1
跑完回圈有時候又忘了初始化=0
......應該不要設全域變數,要改寫法

@
有點邏輯上的問題,跑出的數量與預期的差太多
SQL上問題

@
也可能是說
我還沒把相同物料的需求相累加
所以變成說相同物料需求量的東西出現好幾次
應該要算"總需求量"

=====================================


沒有留言:

張貼留言