VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

請教程式碼錯的問題?

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
區榮熾



註冊時間: 2005-11-14
文章: 191


第 1 樓

發表發表於: 星期一 三月 16, 2009 7:55 pm    文章主題: 請教程式碼錯的問題? 引言回覆

Select a , b , c ,IIF(Cus_area = "R", Sum(Cus_chg) As Cus3r, Sum(Cus_chg) As Cus3t) , e From file .............
執行結果是"遺漏了逗號(,)"
請教的是,逗號不缺,是否 VFP6.0不接受在IIF條件下的選擇......
(解決方式是多加一條Select程式碼而已)
回頂端
檢視會員個人資料 發送私人訊息
goodnight



註冊時間: 2008-10-13
文章: 473
來自: 台南市

第 2 樓

發表發表於: 星期一 三月 16, 2009 11:01 pm    文章主題: Re: 請教程式碼錯的問題? 引言回覆

區榮熾 寫到:
Select a , b , c ,IIF(Cus_area = "R", Sum(Cus_chg) As Cus3r, Sum(Cus_chg) As Cus3t) , e From file .............
執行結果是"遺漏了逗號(,)"
請教的是,逗號不缺,是否 VFP6.0不接受在IIF條件下的選擇......
(解決方式是多加一條Select程式碼而已)


IIF(Cus_area = "R", Sum(Cus_chg) As Cus3r, Sum(Cus_chg) As Cus3t) <==這行不對
因為欄位是固定的, 你一下 Cus3r 一下 Cus3t, 就會出問題
除非你
Select a , b , c ,IIF(Cus_area = "R", Sum(Cus_chg) , 0 ) AS CUS3R, IIF(Cus_area <> "R", SUM(Cus_chg) , 0 ) AS CUS3T, e From file

不過這樣是不能執行的, 因為好像沒有這麼做, 兩個 SUM 又要 IF
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 雅虎訊息通 MSN Messenger
moon64



註冊時間: 2008-12-16
文章: 45


第 3 樓

發表發表於: 星期二 三月 17, 2009 2:45 am    文章主題: 引言回覆

嗯...MR.goodnight 說得沒錯
Select a , b , c , 自訂函數() , e From file .... <~ TRY...
回頂端
檢視會員個人資料 發送私人訊息
區榮熾



註冊時間: 2005-11-14
文章: 191


第 4 樓

發表發表於: 星期二 三月 17, 2009 5:06 pm    文章主題: 引言回覆

moon64 寫到:
嗯...MR.goodnight 說得沒錯
Select a , b , c , 自訂函數() , e From file .... <~ TRY...

謝謝指敎,iif( , , )也是函數,我也試過不行的(POST文前就試用過了)
mr.Goodnight大的碼不能簡單的在 一個 IIF()之下,完成需求....謝謝你的說明.
仍然多用一條Select 碼就好了...........
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1645


第 5 樓

發表發表於: 星期二 三月 17, 2009 5:21 pm    文章主題: 引言回覆

Select a , b , c , Sum(iif(Cus_area = "R",Cus_chg,0)) AS CUS3R, SUM(iif(Cus_area <> "R",Cus_chg,0) AS CUS3T, e From file

試看看
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
區榮熾



註冊時間: 2005-11-14
文章: 191


第 6 樓

發表發表於: 星期三 三月 18, 2009 2:52 am    文章主題: 引言回覆

ckp6250 寫到:
Select a , b , c , Sum(iif(Cus_area = "R",Cus_chg,0)) AS CUS3R, SUM(iif(Cus_area <> "R",Cus_chg,0) AS CUS3T, e From file

試看看

謝謝 ckp6250兄,程式碼正確,原要2條SELECT的,經寫成 SUM(IIF()),就祗要 1 條,簡捷得很..........謝謝.
程式片段;
SELECT 0
Select Area_un, Cus_area, Sum(iif(Cus_area = "R", Cus_chg, 0)) AS CUS_chg3r, Sum(iif(Cus_area = "R", Cus_pice , 0)) AS CUS_pice3r, ;
Sum(iif(Cus_area <> "R", Cus_chg, 0)) AS CUS_chg3t, SUM(iif(Cus_area <> "R", Cus_pice , 0)) AS CUS_pice3t From R0l0filea ;
WHERE &cDate3. And IIF(Cus_area = "R", Cus_pice => 1, Cus_pice > 1) ;
Group By Area_un, Cus_area ORder By Area_un, Cus_area INTO Cursor fc_data3rt

經執行 OK, 謝謝..
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1645


第 7 樓

發表發表於: 星期四 三月 19, 2009 10:25 am    文章主題: 引言回覆

既然正確了, 就得更精確,
請改成
Select a , b , c , Sum(iif(Cus_area = "R",Cus_chg,00000000000)) AS CUS3R, SUM(iif(Cus_area <> "R",Cus_chg,00000000000) AS CUS3T, e From file

幾個 0 不一定 , 看您預估最大數值有幾位數
如果 , 有含小數點的話
原式就要改成
Select a , b , c , Sum(iif(Cus_area = "R",Cus_chg,0000000000.00)) AS CUS3R, SUM(iif(Cus_area <> "R",Cus_chg,0000000000.00) AS CUS3T, e From file
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
區榮熾



註冊時間: 2005-11-14
文章: 191


第 8 樓

發表發表於: 星期五 三月 20, 2009 5:07 pm    文章主題: 引言回覆

ckp6250 寫到:
既然正確了, 就得更精確,
請改成
Select a , b , c , Sum(iif(Cus_area = "R",Cus_chg,00000000000)) AS CUS3R, SUM(iif(Cus_area <> "R",Cus_chg,00000000000) AS CUS3T, e From file

幾個 0 不一定 , 看您預估最大數值有幾位數
如果 , 有含小數點的話
原式就要改成
Select a , b , c , Sum(iif(Cus_area = "R",Cus_chg,0000000000.00)) AS CUS3R, SUM(iif(Cus_area <> "R",Cus_chg,0000000000.00) AS CUS3T, e From file

謝謝,再指教...
至於 0 與 0000000? 的差異,應該都一樣是 0 (因我用的是數目字,故加總後也是 0,如果是文字的話就如你說為準),謝謝你的考慮,非常深入,請容以後下次指導,再次說...謝謝!!
回頂端
檢視會員個人資料 發送私人訊息
ckp6250



註冊時間: 2004-07-30
文章: 1645


第 9 樓

發表發表於: 星期五 三月 20, 2009 5:26 pm    文章主題: 引言回覆

區榮熾兄:
至於 0 與 0000000? 的差異?總有一天您會遇到差異的,
養成好習慣比較有益
回頂端
檢視會員個人資料 發送私人訊息 參觀發表人的個人網站
朱育興



註冊時間: 2003-08-25
文章: 661
來自: 台中市大里區

第 10 樓

發表發表於: 星期六 三月 21, 2009 10:33 am    文章主題: 引言回覆

00000000000 AS CUS3R
代表 CUS3R 欄位可接受 11 位數字,也就是 N(11)

0 AS CUS3R
代表 CUS3R 欄位可接受 1 位數字,也就是 N(01)

那麼當輸入 25,你認為上述兩種設定後的欄位是否都能將 25 存入到欄位中?

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
區榮熾



註冊時間: 2005-11-14
文章: 191


第 11 樓

發表發表於: 星期六 三月 21, 2009 1:33 pm    文章主題: 引言回覆

朱育興 寫到:
00000000000 AS CUS3R
代表 CUS3R 欄位可接受 11 位數字,也就是 N(11)

0 AS CUS3R
代表 CUS3R 欄位可接受 1 位數字,也就是 N(01)

那麼當輸入 25,你認為上述兩種設定後的欄位是否都能將 25 存入到欄位中?

謝謝朱老師的更深一層的思考指導,讓我會在以後的設計思考上多了一層防範....
這次的 SELECT 之後都是加總動作,是故 0 的多少是不影響結果的.因此才回文說無差,卻獲得老師的指導,再一次謝謝.....
回頂端
檢視會員個人資料 發送私人訊息
區榮熾



註冊時間: 2005-11-14
文章: 191


第 12 樓

發表發表於: 星期六 三月 21, 2009 1:40 pm    文章主題: 引言回覆

ckp6250 寫到:
區榮熾兄:
至於 0 與 0000000? 的差異?總有一天您會遇到差異的,
養成好習慣比較有益

謝謝您!
欄位的溢位,常是錯誤的發生因數中比重不輕,謝謝您的叮嚀......
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作