'應該加入物料號篩選自己用
'之前玩Parallel.for
忽略掉排序問題,已修正
'需要注意遺下
MRP EXCEL 格式問題
因為一開始沒有直接存 xls
而是先txt
後來開檔寫入格式後,存檔讓使用者自訂的話
預設格式還是txt
'拿掉報表列印
(crystal Report 轉 excel 可以查查看)
看能不能再報表上面轉excel
=================================
'可能需要改直接建立 xls 不透過 txt
直接開檔
讓使用者決定存檔名稱與位置
幹決定了
做一個table
可以踢掉不想看的製令
然後才下去搜尋
'再來就是資料上的問題了
維護資料ERP 跟 DOS資料正確性
可能可以檢查,DOS,ERP BOM表上
兩邊資料正確性
========================================
'檢查BOM表製程
基數與使用數是否不相符
只看調和部分
可能會需要寫一隻工具程式去檢查
select p.partnum, c.cardnum, p.pdtversion, p.pdtkey, p.prockey
from (select sum(a.partnum) as partnum, a.pdtversion, a.pdtkey, a.prockey from tblbompart a join
( tblbomproc b join tblbompdt d on b.pdtversion = d.pdtversion and b.pdtkey = d.pdtkey
)
on a.pdtversion = b.pdtversion and a.pdtkey = b.pdtkey and a.prockey = b.prockey
where d.isnotvalid = 0 and d.aprvdate not like 'NULL'
group by a.pdtversion, a.pdtkey, a.prockey ) as p join
tblbompart c
on c.pdtversion = p.pdtversion and c.pdtkey = p.pdtkey and c.prockey = p.prockey
where p.partnum*1000 <> c.cardnum and c.partcode not like 'U%' and c.partcode not like 'Q%'
and c.partcode not like 'R%' and c.partcode not like 'O%'
select * from tblbompart where pdtversion = 1 and pdtkey = 865 and prockey = 2954
=================================
再來就看BOM表是不是有問題
或是說有些東西更新
DOS還沒更新
'可能會需要說去考慮公斤 公克的轉換
(基數會多三個0)
好像又不用一 一
==================================
目前看是說
網子套片之類的
因為在 製令生產數 先作千分之八的計算
後面跑出來就不會有小數點
但調和部分還是有小數點上的差距
(累積起來可能就會到整數)
1. 計算製程時,就去計算耗損率(floor)
2. 計算 Part 使用數/基數,(floor)
呈現資料包含小數點
轉檔列印四捨五入
===================================
'計算上的數字與舊系統有點出入
要看一下是不是千分之八的問題
大概知道是取四捨五入的時候
應該計算到最後的數字再開始取
似乎舊系統是在最後的時候
才把數字去加上八趴
但是有一些東西還是有點出入
'從單一制令著手
去檢查城市跑得跟計算的是差多少
可能原因在哪
不知道....
======================================
'每次覆蓋MCST
'增加列印日期時間
'改表格方式呈現資料
'去掉小數點
'把商標部分拉回來
=====================================
@因為透過舊料號去找新料號
會有商標的問題
1.先找 ----XF 無商標的表準製程序
2.如果 ----XF 找不到(舊料號應該一定8碼)
舊料號會有商標資訊,去抓該商標的XF
3. 如果是第七碼 X, B的區別
如果抓到兩種以上, 先踢掉 B
讓X得進去跑(中間再用B替換找)
4. 如果不是第七碼(應該有一個是停用的)
兩個都抓(跑BOM的時候會判斷哪個被停用)
(跑BOM會多 + 1個產品)
5.所以製程有多少產品,跑BOM就有多少產品
=======================================
'所有case 介面設定 希望能夠符合1024X768
目前很怪
'要找最新版本 pdt
'發現說會有一些東西可能是還沒確認,但是也不是停用狀態的
變成會撈不到再製品
將這部分列為資料異常
反推回去找舊料號顯示
(新料,舊料,品名,原因)
'生產的再製品到成品間的差異
只會有商標的差別 (商標都交給選配)
其中的製程材料耗用是一樣的
所以抓完前7碼
判斷X,B
+ ____XF
(if ----XF 找不到
走 ____XF)
去走BOM
所以BOM只會走一次 (已經是XF)
'又是第7碼,需要下判斷說如果擷取的前7碼,末碼是 X或是B
去檢查訂單上面的兩種有沒有存在
(有 X 一定有B, 有B不一定有 X)
"select PartCode, " & tblheadPCode.Rows.Item(i).Item("Qty").ToString & " AS Qty " & _
"from tblorderdet " & _
"where orderno like '" & tblheadPCode.Rows.Item(i).Item("HeadOrderNo").trim() & "' " & _
"and partcode like '" & tblheadPCode.Rows.Item(i).Item("HeadPartCode").ToString & "%' " & IIf(tblheadPCode.Rows.Item(i).Item("HeadPartCode").ToString.ElementAt(6) = "X", "and partcode like '" & Replace(tblheadPCode.Rows.Item(i).Item("HeadPartCode").ToString, tblheadPCode.Rows.Item(i).Item("HeadPartCode").ToString.ElementAt(6), "B") & "%'", "") _
& IIf(tblheadPCode.Rows.Item(i).Item("HeadPartCode").ToString.ElementAt(6) = "B", "and partcode like '" & Replace(tblheadPCode.Rows.Item(i).Item("HeadPartCode").ToString, tblheadPCode.Rows.Item(i).Item("HeadPartCode").ToString.ElementAt(6), "X") & "%'", "")
'似乎有異常資料沒被抓出來
撈前面7碼的SQL 應該修改遺下
讓他能夠辨別異常資料
做法是透過新增的資料去判斷該筆前7碼是不是有抓到完整的7碼資料
不是就屬於異常
================================================
庫存 { //所有可能的前7碼 (有可能多種 第七碼 B,X 是否已確定?)
// B,X 挑一個抓,後面都一樣,先抓MAX(PartCode) -> 撈一個料號
// 判斷mcst PartCode有空值的,剔除
SELECT substring(max(partcode),1,7)) as headPartCode
FROM tblStock sto WHERE sto.PartRule LIKE '%@[2624@]' ESCAPE '@'
}
跳過...
還是沒辦法跳過
訂單{ // 看訂單訂購的是哪個,去對前7碼) 抓到要的產品(包裝後)
select b.*
from tblorder a join tblorderdet b on a.orderno = b.orderno
where a.orderno like 'TAU2960%' and (partcode like '200614B%' or partcode like '200614X%')
}
透過產品去撈包裝前的再製品(包裝前) partCode {
select * from tblbompdt
where pdtcode LIKE '200614X____' and pdtcode not LIKE '%XX' and pdtcode not LIKE '%EX'
and aprvdate not like 'null' and isnotvalid = 0
}
走兩次 Pdt, Proc, Part
1.包裝後XX 去撈 包裝前 XF
2. 包裝前XF 之下所有製程
產品 { // 去抓Aprv過,非停用的產品 pdtkey,pdtversion
// (會包含XP包裝(原料是XF,所以可能要踢掉XX的),XF所有製程)
// 要踢掉的應該不只XX,EX(完成品,沖孔) , 要留HX(HUB 包裝要鎖螺絲)
select * from tblbompdt
where pdtcode LIKE '200614X____' and pdtcode not LIKE '%XX' and pdtcode not LIKE '%EX'
and aprvdate not like 'null' and isnotvalid = 0
}
製程 { // 計算PrcoNum , CardNum , 撈出 ProcKey
select * from tblbomproc
where pdtkey = 10747 and pdtversion = 1
}
原物料 { // XF製程下所有原物料
select * from tblbompart
where
pdtkey = 10746 and pdtversion = 1 and prockey between 28524 and 28528
AND part.PartCode1 NOT LIKE 'NFFILLER' AND part.PartCode1 NOT LIKE 'U%'
}