我想徵求一些SQL語法,在MS-SQL以及Access上能運用的就好
一、組裝製造業的一些元件是可以共用的,但是有一些物料可能因為版本關係或者是客戶供應的專用物料,只能專用在某個工單上,模擬狀況如下:
甲的組成元件有A、B、B、C
乙的組成元件有B、D、E、F、G
其中C跟F是可以共用的,而且B的原料來源有我們自己採購的和客戶提供的兩種,也就是說以下組裝也對
甲的組成元件有A、B、B、F
乙的組成元件有B、D、E、C、G
而且客戶提供的B元件只能用在自己訂購的產品上(這是帳目的關係),請問我要如何下SQL語法讓系統在檢料的時候可以讓產線在領料的時候當領C物料的時候也容許他領走F物料(因為供料上的關係C物料可能用完了);如何下SQL讓領料員在領料的時候能正確領走我們自購的B物料,或者正確領走客戶提供的B物料(因應工單)。
二、有一些重要的元件我們會貼上條碼做控管,如何下SQL讓系統自動產生這些號碼,比如B物料他的編碼原則如下:
B (年碼) (週碼) 流水號
C (年碼) (週碼) 流水號
..............................................
每一週從0000001開始一直流水產生下去,又不至於發生重複號碼的問題。
以上兩大問題懇請高手指點一下,我真的想不出來應該怎麼做,拜託了!
2007-02-27 08:19:33 · 3 個解答 · 發問者 餓狼 5 in 電腦與網際網路 ➔ 程式設計
『還有,你的問題,可能不光 C,F 會混用,其他物料也會
』
嗚嗚...........終於有人知道我的難處,可以共用的物料料號有幾百種,是那種 A = B ,B = C 但是 A 跟 C 又不能共用,而且有時候明明說好可共用了,沒兩下共用料的關係又會被拿掉,我簡直要發瘋了!
2007-02-28 14:44:39 · update #1
另外就是產品序號跟元件序號重複的問題,生管開工單常常忘記序號開到幾號,印條碼的也常常發生這種事情,重複號碼抓不完,所以我才希望能指定一個區間,資料庫就自動產生這些號碼在資料庫裡,然後我再把CodeSoft連上資料庫,讓他印某一套工單就從資料庫裡抓號碼出去印,這樣就不會兩套甚至好多套工單的序號跟元件序號發生重複了!
懇請高手救命!拜託拜託!
2007-02-28 14:44:53 · update #2
第一個問題有兩個子問題:
1.客戶供料 vs. 自購物料
那必須在工單和物料表上頭,增加供料來源的欄位
之後就是簡單的查詢存取了。
2.C,F 類型的物料共用
用 交易 含括整個語法。也就是在交易裡面,先查詢 C 或 F 的量,
然後 比對所需的量,然後才決定怎麼領料。
交易恐怕得在 SQL server 上頭寫,Access 多半不行。
還有,你的問題,可能不光 C,F 會混用,其他物料也會,
所以,不光你得會用預存程序,得給物料參數,
得會用交易,可能還得會用動態組 SQL語法 sp_executesql
.........不大容易喔,你先試試看,不行再把資料結構 post 上來。
第二個問題,
建議你用 trigger 去做,記得SQL 的插入語法 裡面不要包含 「物料編碼」 欄位,
讓 trigger 自動去做,此外,表格中需要 identity 欄位
CREATE TRIGGER trigger_name
ON table FOR INSERT
AS
DECLARE @HeadCode bigint,@Code Bigint
Select @HeadCode=DatePart(YY,GetDate())*100 DatePart(WK,GetDate())
Select @Code=@HeadCode*10000000 Count(*) 1 From table Where Substring(物料編碼 ,1,6)=@HeadCode
Update table
Set 物料編碼=@Code
FROM table T1 INNER JOIN inserted T2 ON T1.id = T2.id
-------------
這樣就可以自動產生,不過,這個只適用於一次輸入一筆資料,
也就是你的 Insert 語法 一次只輸入一筆資料,如果你用的是陣列輸入,
也就是用 Insert Into 表格名稱 [(欄位1,欄位2,...)] Select 子句
那上面的東西還得改寫。
2007-03-02 15:53:40 補充:
要進一步幫你,得知道你CF混用的狀況,
第一,是不是會超過兩種東西混用
第二,是混用的元件,有沒有優先順序,
第三,是否優先順序,在不同的產品下是不同的。
---------------------
至於流水號的問題,你應該看懂了吧?
---------------------
其實,不管是哪一種,重點就是,盡量在 trigger 和 store procedure,
在一個交易內完成。
你能不能自己搞定啊?不行的話,再告訴我,
不過,那就得設法把你的資料庫架構傳給我,然後才好幫你弄囉。
2007-02-28 10:41:50 · answer #1 · answered by 老骨頭 3 · 0⤊ 0⤋
就資料庫的正規化來看
最好是用另一個資料表(組合物料)來做關聯,例如物料Z,而F,C都隸屬物料Z,因為F與C畢竟是不同的物料,還是會有單獨庫存量的問題,可是會造成系統設計上的負擔
物料B則可用一個欄位(供應商或物料來源)來做程式判斷
流水號部份可以建一個資料表存放目前流水號
另建一個預儲程序來取出與更新流水號
2007-02-27 12:27:51 · answer #2 · answered by ? 2 · 0⤊ 0⤋
1:在領料單的___物料來源的欄位____設定條件
2:每星期一重新編號_
2.1:先設計(找)出日期的星期一.
2.2:設定一個星期的區間.
2.3:由此區間作recordset的設定.便可規劃出你要的編號資料.
2007-02-27 09:28:00 · answer #3 · answered by pop 7 · 0⤊ 0⤋