2011年7月25日 星期一

demo case 1 & case 2

現在拿到更多資料後
發現了許多問題


'訂單上 CustOrderNo 與 OrderNo不一定相符
所以完全不能透過 這個方式找訂單
需要直接 mark + ordno 去對 OrderNo
並且核對 partcode 新料號 去找訂單


select *
from tblorderdet
where PartCode LIKE
(select SUBSTRING(max(partcode),1,7) from tblstock
where PartRule LIKE '%@[0040@]' ESCAPE '@' ) + '%'



'FoxPro 在 SQL Union 有使用次數上的限制
一次連線 最多 10個

'預估用量四捨五入會有0

'製令 的 ordno 有時候會有 R 字樣
表示修改次數
訂單號還是一樣(去掉R之後)

'Mark 一定 與訂單前三碼相同
(訂單號 AAC....客戶AAA -> 排製令是依照 AAC 去排)
 問題在於,製令有可能將同一系列的東西(不同訂單號)放在同一個製令下
變成沒有訂單號

但基本上,做的東西是一樣的
那怎麼知道有多少要給哪個客戶

也就是說我根本找不到訂單號

這個似乎是外包製令
不需要領料
所以不用處理

'透過舊料號撈到的新料號
不一定可以跟訂單上的PartCode相符合

撈到新訂單以後,去掉末6碼     前7碼 + ----XX
再去比對訂單Det上面的PartCode 前7碼


'比對部分人然有問題

select SUBSTRING(max(partcode),1,7)
from tblstock
where partrule like '%@[2476N@]' escape '@'




SELECT ord.CustID, orddet.CustSpec, ord.CustOrderNo, ord.OrderNo, orddet.PartCode, pdt.PdtKey, orddet.PdtVersion, MAX(ord.FormVersion), sto.PartRule,
                            1000 AS 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
                            JOIN tblStock sto ON sto.PartCode = orddet.PartCode
                            WHERE ord.CustOrderNo = 'sch8075'
                            AND ord.Status = 2
                            AND orddet.PartCode LIKE '200476N%'
                            GROUP BY ord.custid, orddet.CustSpec, ord.CustOrderNo, ord.OrderNo, orddet.PartCode,
                            pdt.PdtKey, orddet.PdtVersion, sto.PartRule, Qty

=========================================
'foxpro檔案將從Server資料夾去撈到本機
然後從本機上處理資料
(可刪除資料夾,也可不刪除)

'希望做一隻update程式,能夠判斷目前程式版本
 並判斷是否需要更新

 需要做一些版本規劃
 版本編碼方式
紀錄每次版更內容

檢查版本時,也能夠依照版本更動的編碼去
決定是小幅update .exe
還是大改版 .setup

=====================================
'檔案不存在,與查無資料,應該分清楚
好像又不用,
如果說範圍搜尋的話,
範圍日期內可能會有許多個檔遺漏的話,
搜尋完以後還要顯示遺漏的檔案有點怪

或是說提示遺漏檔案有沒有必要,
因為mmac檔案好像是user去撈資料庫到個人PC上的
會不會說有檔案沒撈到
而USER不知道之類的發生

'要查一下怎樣建立更新檔,而不用每次都包那些必要條件的套件
 建立更新檔,似乎可以直接安裝部署 Extra.exe 執行檔
 然後記得去掉預設的必要條件,
 把路徑設成完整安裝檔案的路徑之下,(應該就像是檔案覆蓋吧)
 就OK了
 有沒有什麼問題要在測試看看

.exe檔,會包入所有套件
.msi檔,只會有主程式
所以應該是說,只需要發布主程式提供安裝就可以


'重建BDF,覺得MARK+ORDNO 不一定等於 CUSTORDERNO 的問題一定要解決
MARK = AAA
CUSTORDERNO 可能會是 AACXXXX

mmac檔案存在,有某筆資料
該筆資料無法再APEX找到
應該要顯示在異常資料的FORM
而不是單純顯示"此篩選無資料"

'目前沒什麼問題

再來等上線實測

=================================================
'case 1 , 使用數 基數 問題
 選配 箱子 應該無條件進位 : - FLOOR(-n)

FLOOR(-10.3)FLOOR(10.3)
-1110

 BOM表去小數點四捨五入  : ROUND(x)
http://webdesign.kerthis.com/sql/sql_function_round
 BOM表 不計 FILLER : part.partcod <> 'NFFILLER'


'Excel 轉檔 跑巨集 希望做到 滑鼠鍵盤的輸入鎖死之類
(或是說跑完巨集的東西才Show Excel App)

讓他跑完 在visible 就好
==================================================
昨天初步跑了一下

有一些問題

case 1
料號應該要抓取製程下的物料
(處理不同製程用到相同料號的問題,到底需要的量是哪一個製程的量)
似乎沒有抓到BOM表(應該是有,可能測試的資料問題,再跑跑看)

'該製程所生產的數量是多少 sn
選配跟BOM表都要把Qty改成sn

'mmac檔案 跨百年判斷
應該直接處理西元年
最後要下SQL再去改百年
不然會被搞死 (開始西洋年月,結束西洋年月,開始結束百年月日,mark)

'需不需要考量前後日期範圍 可以對調的問題
檢查後面應該要大於前面就可


case 2
日期格式處理
單位量上面的處理(ex.  pc  -  Kpc 千倍)

感覺case 1的單位換算也有問題
檢查一下
到底是*1000還是/1000

碰到單位要先檢查是不是千倍的單位,才去處理

不知道哪邊有問題,怎麼算出來的網子有小數點

計算 使用數/基數 就會把KG換成G
(所以不需要特別處理單位)
因為我多處理了單位問題,所以網子才出現小數點

包裝選配箱子之類的,如果製程數量不足一箱,
應該無條件進位
=======================================================
case 1
大概知道問題在哪裡了
我有去抓BOM表,但是抓出來的似乎只有到再製品,(包裝前)
應該撈出在製品後,再去看BOM表,查詢相關細項材料需求

似乎還要注意料號停用,版本問題,之前有沒注意我忘了一 一||
所以可能也要看一下選配料號的停用,版本問題

1.從製程 (oldPartCode)去撈出 XF(stock.newPartCode) 再製品後
撈出各製程 PartCode(ProcCode)

select * from tblstock
where PartRule LIKE '%@[0348BAAA@]' ESCAPE '@'

結合 stock 後 撈出該製成下的 成品

SELECT ord.CustID, orddet.CustSpec, ord.CustOrderNo, ord.OrderNo, orddet.PartCode, pdt.PdtKey, orddet.PdtVersion, CAST(orddet.Qty AS decimal(15,3)) AS Qty, MAX(ord.FormVersion)
                     FROM tblOrderDet orddet JOIN tblOrder ord ON ord.OrderNo = orddet.OrderNo
                     JOIN tblBOMPdt pdt ON orddet.PartCode = pdt.PdtCode AND orddet.PdtVersion = pdt.PdtVersion                      
JOIN tblStock sto on sto.partcode = orddet.partcode
WHERE ord.CustOrderNo = 'AAA0063'
                     AND ord.Status = 2
and sto.PartRule LIKE '%@[0348BAAA@]' ESCAPE '@'
                     GROUP BY ord.custid, orddet.CustSpec, ord.CustOrderNo, ord.OrderNo, orddet.PartCode,
                     pdt.PdtKey, orddet.PdtVersion, Qty



2.從在製品(成品000405BAAA0XX ->000405BAAA0XF)
BOMPdt (只有 XX成品, XF 再製品)

撈出非停用狀態的 XF
並且 已核准

select *
from tblbompdt
where pdtcode like '000423BDEW1XF'
and isnotvalid = 0
and aprvdate not like 'null'


再去看一次BOM表查 製程
BOMProc(查找該製程)(調和 : 原料,成形 : 7碼----XD,燒成 : 7碼----XC,脫卻 : 7碼----XH)
pdtkey,pdtversion 可以找到所有製程

去掉 XC,XH,XF(只找調和製程 , 再去找 XD (網子...等原料))

select * from tblBOMProc
where pdtkey = 7332
and pdtversion = 1
and ProcCode not LIKE '%X_'



BOMPdt,BOMPart(只有 XX成品, XF 再製品)

找出所有調和製程下的材料

select * from tblBOMPart
where prockey between 483 and 484
and pdtversion = 2
and pdtkey = 412

沒有留言:

張貼留言