goodnight
註冊時間: 2008-10-13 文章: 472 來自: 台南市
第 1 樓
|
發表於: 星期二 三月 20, 2012 10:29 am 文章主題: [分享]vfp+sql server語法 iif->case..when..then |
|
|
本來我都是把符合條件的資料download下來再處理
後來遇到需要用到判斷條件後增加欄位, 也想簡化程式, 讓自己進步一下
例如 1 = 1.未生產
在 vfp local 裡可以用 iif() 來解決, 但是當我要用在 sql server 時, iif() 就不能用了, 因為必須符合 sql server 語法, 於是找了討論區的文章, 終於找到解決方案, 因此分享一下整體的語法, 包含了 table 的關連, 當然這篇是針對初級者, 請各位先進及高手也多多指導
其實我是偷懶的先在 access 建好, 再複製到 vfp, 中間也遇到了有趣的事
就是在 access 卻可以用 iif() , 可能是 access 會自動轉換吧, 而 vfp 不會自動轉換
以下是語法 (部份欄位拿掉了, 只留重要語法)
紅色語法就是取代 iif()
SI_SQL_CMD = ;
"SELECT Left([TA010],6) AS 預交年月, MOCTA.TA010 AS 預計完工日, MOCTA.TA014 AS 實際完工日, MOCTH.TH005 AS 供應商代碼, PURMA.MA002 AS 供應商名稱, " + ;
"MOCTA.TA001 AS 製令單別, MOCTA.TA002 AS 製令單號, MOCTA.TA006 AS 產品品號, MOCTA.TA034 AS 產品名稱, MOCTA.TA035 AS 產品規格, MOCTA.TA007 AS 單位, " + ;
"MOCTA.TA015 AS 預計產量, MOCTA.TA017 AS 已生產量, MOCTI.TI007 AS 進貨數量, MOCTI.TI019 AS 驗收數量, MOCTA.TA044 AS 急料, MOCTA.TA011 AS 狀態碼, " + ;
"CASE MOCTA.TA011 WHEN '1' THEN '1.未生產' WHEN '2' THEN '2.已發料' WHEN '3' THEN '3.已生產' WHEN 'Y' THEN 'Y:已完工' ELSE 'y:指定完工' END AS 狀態名稱 " + ;
"FROM ((MOCTA LEFT JOIN MOCTI ON (MOCTA.TA002 = MOCTI.TI014) AND (MOCTA.TA001 = MOCTI.TI013)) LEFT JOIN MOCTH ON (MOCTI.TI002 = MOCTH.TH002) AND " + ;
"(MOCTI.TI001 = MOCTH.TH001)) LEFT JOIN PURMA ON MOCTH.TH005 = PURMA.MA001 " + ;
"WHERE (((MOCTA.TA010) Between ?_PARA1 And ?_PARA2) AND ((MOCTA.TA001)='OD51')) " + ;
"ORDER BY MOCTA.TA010 " [/list] |
|