ACCESS中能执行,SQL中出错的一段代码 |
答題得分者是:Stallion
|
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
在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 發送簡訊給我 |
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 發送簡訊給我 |
首先如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 發送簡訊給我 |
|
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
引言:看到这个指点,我在没试之前就估计就是这答案了,因为在这之前我也详细看了一下数据表,就是发现那个栏位被加了个[],当时我还没意识到,以为加了没影响的,呵呵引言: ..... ADOQuery2.SQL.Add('where [user]=:用户名'); // user是 MSSQL的關鍵字,加個中括弧,表示為你的TABLE欄位。 ....---------------------------------------------- We will either find a way, or make one. -Hannibal -。
------
我的编程起步于ktop,我将永远支持ktop |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |