全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1751
推到 Plurk!
推到 Facebook!

一個MDB SQL 語法 iif() 的怪現象?

缺席
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-10-07 18:08:47 IP:118.169.xxx.xxx 未訂閱
我遇到一個很奇怪的問題

資料庫格式 MDB 檔 (OFFICE 2003)
Delphi ADO 方式讀取 ODBC (MicroSoft Access Driver)

ADOquery DBgrid DataSource
語法: select F1, F2, iif(F3=1,'開啟','關閉') as F3X, F4 from DATA1
在多數的電腦 都可以正常顯示 F3 欄位為 "開啟" 或 "關閉"
但就在一台電腦上, 上面的語法, F3 的 DBGRID 欄位竟然變成了 (MEMO)

如果我改寫成以下方式
select F1, F2, F3, F4 from DATA1
然後在FieldEditor 上把 F1~F4 加入, 同時再增加一個 CALCFIELD 為 F3X
在 ONCALCFIELD上寫
if ADOQUERY1F3.AsInteger=1 then ADOQUERY1F3X.Value:= '開啟'
else ADOQUERY1F3X.Value:= '關閉'

這樣的寫法, 那台電腦就通過了, 當然其他電腦也還是ok的,
程式是一樣的, ODBC 的 DRIVER 版本也是一樣的, 實在找不出任何原因?
aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-10-07 18:15:36 IP:210.64.xxx.xxx 訂閱
不知您是否有檢查 mdac 的版本是否都一樣?
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-10-08 11:36:16 IP:118.169.xxx.xxx 未訂閱
版本都是一致的
===================引 用 aftcast 文 章===================
不知您是否有檢查 mdac 的版本是否都一樣?
RootKit
資深會員


發表:16
回覆:358
積分:419
註冊:2008-01-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-10-12 21:35:13 IP:122.126.xxx.xxx 訂閱
用 MDB 用了八、九年沒聽過有這樣的問題。
有可能設置的問題,但不清楚。
不過,類似需求我大部分是直接在 DBGrid 上處理。

會出現這個情形,好像是文字長度超過 255或是 Memo Field。
本來想用轉型方式解決,不過 ACCESS 好像沒有這個函數。

P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-10-13 10:39:11 IP:118.169.xxx.xxx 未訂閱
嗯! 看來似乎沒有人有此遭遇了, 暫時先結案了
2007
中階會員


發表:54
回覆:90
積分:98
註冊:2008-08-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-10-13 12:25:19 IP:60.249.xxx.xxx 未訂閱
呵!!  亂猜的!!

會不會那一台電腦 有灌 OFFICE 2007 ???

===================引 用 P.D. 文 章===================
我遇到一個很奇怪的問題

資料庫格式 MDB 檔 (OFFICE 2003)
Delphi ADO 方式讀取 ODBC (MicroSoft Access Driver)

ADOquery DBgrid DataSource
語法: select F1, F2, iif(F3=1,'開啟','關閉') as F3X, F4 from DATA1
在多數的電腦 都可以正常顯示 F3 欄位為 "開啟" 或 "關閉"
但就在一台電腦上, 上面的語法, F3 的 DBGRID 欄位竟然變成了 (MEMO)

如果我改寫成以下方式
select F1, F2, F3, F4 from DATA1
然後在FieldEditor 上把 F1~F4 加入, 同時再增加一個 CALCFIELD 為 F3X
在 ONCALCFIELD上寫
if ADOQUERY1F3.AsInteger=1 then ADOQUERY1F3X.Value:= '開啟'
else ADOQUERY1F3X.Value:= '關閉'

這樣的寫法, 那台電腦就通過了, 當然其他電腦也還是ok的,
程式是一樣的, ODBC 的 DRIVER 版本也是一樣的, 實在找不出任何原因?
系統時間:2024-03-28 23:17:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!