![VFP 愛用者社區 首頁](templates/subSilver/images/vfps.jpg) |
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
dkfdtf
![](images/avatars/1280672735463b429c1677b.gif)
註冊時間: 2005-02-05 文章: 31 來自: guangzhou,china
第 1 樓
|
發表於: 星期四 五月 03, 2007 11:11 am 文章主題: 奇怪的 ICASE 函數 |
|
|
一條長長的 SQL 語句在測試時總是齣現 C0000005 錯誤,一直簡化到最后才髮現是 ICASE 函數造成!但此 ICASE 函數並沒有錯誤 !!!
下麵是簡化后的重現過程:
CREATE CURSOR test ( id N(2) )
FOR m.ii = 1 TO 10
INSERT INTO test( id ) VALUES ( m.ii )
ENDFOR
SELECT ICASE( id==1, 'A', id==2, 'B', 'D' ) FROM test && 這條語句居然齣 C0000005
如果將 D 改為 C 則不會齣現! 簡直暈S了。
環境:Windows XP SP2 + vfp9 SP1, 其它環境下不知情況如何? |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
impotence
![](images/avatars/2002176076438261e0ac474.gif)
註冊時間: 2005-02-21 文章: 135 來自: Hong Kong
第 2 樓
|
發表於: 星期四 五月 03, 2007 12:10 pm 文章主題: |
|
|
已測試 , 所得結果和你一樣 ! _________________ 一個常常忘記 Command 的人 ! |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
marvin
註冊時間: 2004-06-01 文章: 321
第 3 樓
|
發表於: 星期四 五月 03, 2007 12:12 pm 文章主題: |
|
|
我試過, 確實有 C0..0005
問題是這指令不應該這樣用
select 後亦不可這方式選擇要列出的欄位. |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
Abel
註冊時間: 2005-03-14 文章: 189 來自: 鹿港小鎮
第 4 樓
|
發表於: 星期四 五月 03, 2007 1:04 pm 文章主題: |
|
|
select 在vfp 中有兩種用法
一個是 單純只能在 vfp 中的 select
一種是 sql 的查詢程序
SQL 已经是大型資料庫中相關廠商中幾近較接近且相同的語言了,大多數廠商慢慢向 sql 標準程序看齊,
而且在我所接觸的 vfp 中 的 sql 也有一些的變動,這些 sql 程序都有越來越向 sql 標準程序靠攏的樣子,
當然對 vfp user 可能會有越變越不好用的情形,原本一個式就可以,現在搞得要好多式子才能做一樣功,
不過如果將 vfp 想成可以進出大多數資料庫的程式語言,那麼就應該慢慢接受 open share 的觀念,
多做一點功可以更 容易與人接觸,才不會使 vfp 更冷門。
您看就連 M$ 的 office 2007 也都推出能共用 xml 格式的相關檔案。 |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
dkfdtf
![](images/avatars/1280672735463b429c1677b.gif)
註冊時間: 2005-02-05 文章: 31 來自: guangzhou,china
第 5 樓
|
發表於: 星期四 五月 03, 2007 1:44 pm 文章主題: |
|
|
marvin 寫到: | 我試過, 確實有 C0..0005
問題是這指令不應該這樣用
select 後亦不可這方式選擇要列出的欄位. |
我並非選擇要列出的欄位。
原程序中是有一數據表存放了單據的單頭數據(其中有一整型欄位代表單據的類型);表單中將符合一定條件的單號列出供用戶挑選,每種不同的單據顯示不同的顔色(使用 grid 顯示)。為了以后容易維護和理解,所以在生成 grid 的 recordsource 時希望用一個字母來表示單據類型,這樣在編寫的 dynamicforecolor 屬性中可以清楚看到顔色與單據類型的對應關繫,其中一例便是用 'D' 代表已被冲紅的單據,沒想到......最后改用 K(illed) 代表。
那條語句的原型如下:
INSERT INTO curHeads ;
SELECT bh.id, 'B', ;
ICASE( ;
1 == bh.billtype, 'G', ;
2 == bh.billtype, 'P', ;
10 == bh.billtype, 'R', ;
11 == bh.billtype, 'S', 'D ' ), ;
Thisform.billmark1 + TRANSFORM( bh.billno, '@R 999999.9999' ), ;
'', bh.d_gen, TTOD( bh.dt_cfm ), ;
'', cu.cname, bh.notes ;
FROM bkvend_h bh ;
LEFT JOIN curUsers cu ON bh.operid == cu.id ;
WHERE !EMPTY( bh.dt_cfm ) AND ( bh.vendorid == Thisform.vendorid ) ;
UNION ;
SELECT bh.id, 'S', ;
ICASE( ;
1 == bh.billtype, 'G', ;
2 == bh.billtype, 'P', ;
10 == bh.billtype, 'R', ;
11 == bh.billtype, 'S', 'D' ), ;
Thisform.billmark2 + TRANSFORM( bh.billno, '@R 999999.9999' ), ;
bh.vendbillno, bh.d_gen, TTOD( bh.dt_cfm ), ;
cu1.cname, cu2.cname, bh.notes ;
FROM orders_h bh ;
LEFT JOIN curUsers cu1 ON bh.mapoutid == cu1.id ;
LEFT JOIN curUsers cu2 ON bh.operid == cu2.id ;
WHERE !EMPTY( bh.dt_cfm ) AND ( bh.vendorid == Thisform.vendorid ) ;
ORDER BY d_gen
提取那么多的欄位是因為這個 cursor 還有其它用途。
dkfdtf 在 星期四 五月 03, 2007 3:58 pm 作了第 1 次修改 |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
garfield Site Admin
![](images/avatars/1721266997466e2d116a266.jpg)
註冊時間: 2003-01-30 文章: 2158
第 6 樓
|
發表於: 星期四 五月 03, 2007 3:01 pm 文章主題: |
|
|
我測試過,
只要ICASE的最後的一個參數的最後一個字,
不要是D 就不會出錯,
更奇怪的是,
如果你用一個變數代替 'D' 就不會出錯,
看誰能把這個VFP9的BUG 提報給MicroSoft 吧. _________________ 利用>>搜尋<<的功能會比問的還要快得到答案. |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
BIN
![](images/avatars/19971457440ff670ac3db3.jpg)
註冊時間: 2004-07-22 文章: 94 來自: Tainan, Taiwan
第 7 樓
|
發表於: 星期四 五月 03, 2007 5:19 pm 文章主題: |
|
|
SELECT IIF(id==1, 'A',IIF( id==2, 'B', 'D' )) FROM test
暫時用IIF()解決吧... |
|
回頂端 |
|
![](templates/subSilver/images/spacer.gif) |
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|