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

sql 2000 語法問題請教?

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



註冊時間: 2003-11-04
文章: 69


第 1 樓

發表發表於: 星期二 十月 30, 2007 11:33 am    文章主題: sql 2000 語法問題請教? 引言回覆

mdate1='20071001'
mdate2=' ' && 當empty(mdate2) 時,表示日期沒有設限 ps. ' '= default value
mdate1,mdate2為 sql 資料表test欄位

mdateid = dots(date())
mexec="select * from test where ?mdateid>=mdate1 and iif(isempty(mdate2),true,?mdateid<=mdate2)"

nn=sqlexec(nhandle,mexec,"temp")

結果 nn<=0 不正確

請問各位大大 iif(isempty(mdate2),true,?mdateid<=mdate2) 這一段要怎麼寫


janlih 在 星期三 十月 31, 2007 10:17 am 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息
wuno2001



註冊時間: 2007-02-09
文章: 56


第 2 樓

發表發表於: 星期二 十月 30, 2007 2:25 pm    文章主題: 引言回覆

試試 (isempty(mdate2) or ?mdateid<=mdate2)
另外,欄位名有大小寫之分
回頂端
檢視會員個人資料 發送私人訊息
impotence



註冊時間: 2005-02-21
文章: 135
來自: Hong Kong

第 3 樓

發表發表於: 星期二 十月 30, 2007 4:05 pm    文章主題: 引言回覆

CASE WHEN condition THEN true value ELSE false value END
_________________
一個常常忘記 Command 的人 !
回頂端
檢視會員個人資料 發送私人訊息
janlih



註冊時間: 2003-11-04
文章: 69


第 4 樓

發表發表於: 星期三 十月 31, 2007 10:15 am    文章主題: 引言回覆

感謝二位大大的幫忙

方法1:
(isempty(mdate2) or ?mdateid<=mdate2)

方法2:
CASE WHEN isempty(mdate2) THEN true ELSE ?mdateid<=mdate2 END

二者皆已試過
但結果 nn<=0 還是不正確

如果改為 (mdate2='' or ?mdateid<=mdate2) 則 ok

如加入 iif() 或是 isempty()、 case when..就會錯誤
回頂端
檢視會員個人資料 發送私人訊息
impotence



註冊時間: 2005-02-21
文章: 135
來自: Hong Kong

第 5 樓

發表發表於: 星期三 十月 31, 2007 12:30 pm    文章主題: 引言回覆

你用 SPT 的時候 , 請用 SQL 的 command , 而不是 VFP 的 ... 在 SQL 中 , 好像沒有 isempty() ...., 還有 ... 什麼是 THEN true ??
_________________
一個常常忘記 Command 的人 !
回頂端
檢視會員個人資料 發送私人訊息
janlih



註冊時間: 2003-11-04
文章: 69


第 6 樓

發表發表於: 星期三 十月 31, 2007 1:11 pm    文章主題: 引言回覆

impotence 寫到:
你用 SPT 的時候 , 請用 SQL 的 command , 而不是 VFP 的 ... 在 SQL 中 , 好像沒有 isempty() ...., 還有 ... 什麼是 THEN true ??


CASE WHEN isempty(mdate2) THEN true ELSE ?mdateid<=mdate2 END

Sorry! 以foxpro的寫法應該是where iif(empty(mdate2),.t.,mdateid<=mdate2) 這樣的語法在foxpro是可通過的,但我不知SQL SERVER中,其.t.的寫法是否為true?

而isempty是在help的索引中找到的?
回頂端
檢視會員個人資料 發送私人訊息
wuno2001



註冊時間: 2007-02-09
文章: 56


第 7 樓

發表發表於: 星期四 十一月 08, 2007 5:34 pm    文章主題: 引言回覆

試試 ( ( mdate2 is null ) or ?mdateid<=mdate2)
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

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


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