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

ACCESS中能执行,SQL中出错的一段代码

答題得分者是:Stallion
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-17 21:59:21 IP:222.184.xxx.xxx 未訂閱
在ACCESS做数据库时以下代码正常,换成SQL后以下代码执行时填入正确的用户名称后还是提示('无此用户名称'); 注(ZH为全程变量,在整个FORM开始处就声明的,在ACCESS中正常运行)代码如下:
 
begin
   zh:= Combobox1.Text;
  if zh='' then
   showmessage('请先选择一个正确的用户名称')
  else
  begin
     ADOQuery2.Close;
     ADOQuery2.SQL.Clear;
     ADOQuery2.SQL.Add('select * from tb_user');
     ADOQuery2.SQL.Add('where user=:用户名');
     ADOQuery2.Parameters.ParamByName('用户名').Value:=ZH;
     ADOQuery2.Open;
    if ADOQUery2.RecordCount>0 then
    gnbform.ShowModal
    else
      begin
      showmessage ('无此用户名称');
      end;
    end;
end;
------
我的编程起步于ktop,我将永远支持ktop
kevinguo
初階會員


發表:1
回覆:31
積分:31
註冊:2002-11-20

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-17 22:20:17 IP:220.129.xxx.xxx 未訂閱
ntjrr兄,您好: 可以放一個DBGrid用來顯示ADOQuery2查詢後的資料,先確定是不是真的有查到資料,如果有,那可能是ADOQUery2.RecordCount的問題,我記得在TQuery會有RecordCount有時會變-1的情況,不知道ADOQuery是不是會有同樣情形,解決方法,先下Query.Last,再下Query.First才會拿到正確的RecordCount,你試試看.或是你可以直接使用 if Trim(ADOQuery2.FieldByName('ID').Asstring)<>'' then gnbform.ShowModal // 選一定會有值的欄位來判斷
h@visli
資深會員


發表:103
回覆:429
積分:431
註冊:2004-02-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-17 23:49:11 IP:222.248.xxx.xxx 未訂閱
首先如kevinguo所述,檢查ADOQuery的SQL查詢是否能够正確執行并返回結果。 其次,我以前碰到dbExpress組件的RecordCount不能使用,具体情況不記得了,但dbGo組件還沒碰到RecordCount出錯的情況。這類操作最好把SQL語句改為: select count(*) from tb_user where ...... 然後使用 if ADOQuery1.Fields[0].asinteger > 0 then ...... ---------------------------- 於Delphi K.Top之上 博采眾家之長, 奉獻綿薄之力 ---------------------------
------
------------------------
博采眾家之長,奉獻綿薄之力
------------------------
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-18 00:29:59 IP:211.22.xxx.xxx 未訂閱
引言: ..... ADOQuery2.SQL.Add('where [user]=:用户名'); // user是 MSSQL的關鍵字,加個中括弧,表示為你的TABLE欄位。 ....
---------------------------------------------- We will either find a way, or make one. -Hannibal -。
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-18 07:19:27 IP:222.184.xxx.xxx 未訂閱
引言:
引言: ..... ADOQuery2.SQL.Add('where [user]=:用户名'); // user是 MSSQL的關鍵字,加個中括弧,表示為你的TABLE欄位。 ....
---------------------------------------------- We will either find a way, or make one. -Hannibal -。
看到这个指点,我在没试之前就估计就是这答案了,因为在这之前我也详细看了一下数据表,就是发现那个栏位被加了个[],当时我还没意识到,以为加了没影响的,呵呵
------
我的编程起步于ktop,我将永远支持ktop
系統時間:2024-11-25 10:19:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!