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

AdoQuery+SQL Server 与AdoQuery + ACCESS中的SQL区别?

尚未結案
hrbshen
一般會員


發表:10
回覆:11
積分:4
註冊:2005-04-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-30 14:59:45 IP:218.9.xxx.xxx 未訂閱
我在AdoQuery+ACCESS中写如下SQL可以正常运行 select * from table where false or field1>0...open 但此语句在SQL Server2000中却不能。 为什么?应该如何写? 另外一个问题:(adoquery access) 我在Windows xp delphi中编写的如下SQL,可以正常运行,但在Windows 98环境下显示的不是正确的数据。是什么原因 select dept, sum(fee) as fees * :rate; from table; where ....; group by dept; parambyname('rate').value := rate; open; 在编写的机器(Windows XP)中fees得数正确,但在Windows98中结果不正确,看不出规律。 發表人 - hrbshen 於 2005/08/30 15:15:04
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-30 21:44:38 IP:210.68.xxx.xxx 未訂閱
1. select * from table where field1>0 // "false or" 沒用拿掉 2. parambyname('rate').value := rate; 改為 parambyname('rate').AsFloat := rate; 試試 也有可能是 XP/98 Access 版本不同或ADO版本不同造成的.
hrbshen
一般會員


發表:10
回覆:11
積分:4
註冊:2005-04-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-31 09:20:32 IP:218.9.xxx.xxx 未訂閱
引言: 1. select * from table where field1>0 // "false or" 沒用拿掉 2. parambyname('rate').value := rate; 改為 parambyname('rate').AsFloat := rate; 試試 也有可能是 XP/98 Access 版本不同或ADO版本不同造成的.
第1个问题中where 中加入 false or 的原因: 让用户自已选择“一些”查询条件。即如果选择了field1,则where中加入对它的判断。 完整的例子是: sql.add('where false'); if length(edit1.text)>0 then begin sql.add('or field1> :edit1'); parameters.parambyname('edit1').value := edit1.text; end; if length(edit2.text)>0 then ............... 第二个问题: 我也试过 parambyaname('rate').asfloat := rate;错误亦然。
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-31 13:09:04 IP:203.69.xxx.xxx 未訂閱
1. 問題就是出在 SQL 2000 不認得 "false".... 改成 "1=0" 基本上我並不認同這種"取巧" 卻又不夠巧的 Query 下法, 不論是 false 或 1=0 基本上就是在 server 端造成額外又無用的判斷, 其原因居然是 '懶'得多打幾行程式碼.... 2. 可否將數字列幾個出來....
系統時間:2024-06-08 8:02:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!