是ADO的问题,可以在程序中适当位置查询后添加一条语句: if ADOQuery.eof or ADOQuery.bof then Adoquery.first 试一试吧,不知行不行
试一试下面的代码: var str:string begin str:='select * from b1 where mc like ''%'+trim(edit1.text)+'%'''' with adoquery1 do begin adoconnection1.connected:=true; close; sql.clear; sql.add(str); try excesql; except showmessage('数据库连接不成功'); end; showmessage('数据库连接成功'); end;
加个if语句判断应该不会错了: if adoquery1.active then begin if adoquery1.eof and adoquery1.bof then adoquery1.recordset.close; end; adoquery1.close; adoquery1.sql.clear; adoquery1.sql.add('select * from b1'); adoquery1.sql.add('where mc like ''%'+trim(edit1.text)+'%'''); adoquery1.Open;
用参数比较好吧, adoquery1.sql.add('select * from b1 where mc like :v_name); Parameters.ParamByName('V_Name').value:='%'+trim(edit1.text)++'%'; Open; ... close;
呵呵,你再是是这样可以吗: adoquery1.close; adoquery1.sql.clear; adoquery1.sql.add('select * from b1'); adoquery1.sql.add('where mc like ''%'+trim(edit1.text)+'%'''); adoquery1.Open; if adoquery1.eof and adoquery1.bof then begin adoquery1.recordset.close; adoquery1.close; end;
if ADOQuery.eof or ADOQuery.bof then Adoquery.first
试一试吧,不知行不行
var
str:string
begin
str:='select * from b1 where mc like ''%'+trim(edit1.text)+'%''''
with adoquery1 do
begin
adoconnection1.connected:=true;
close;
sql.clear;
sql.add(str);
try
excesql;
except
showmessage('数据库连接不成功');
end;
showmessage('数据库连接成功');
end;
if adoquery1.active then
begin
if adoquery1.eof and adoquery1.bof then
adoquery1.recordset.close;
end;
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from b1');
adoquery1.sql.add('where mc like ''%'+trim(edit1.text)+'%''');
adoquery1.Open;
cookieyfeng(怪癖幽魂) 也有道理,可是,万一在字符串中间有空格怎么办?
所以,要对Edit1进行检测,用到onKeyPress事件。
具体怎么办,查一下帖子就ok!
cookieyfeng(怪癖幽魂) 说的有道理,有不足的地方,万一有空格怎么办?
manmanchong(事实证明:智商为0) 也有道理,可是,万一在字符串中间有空格怎么办?
所以,要对Edit1进行检测,用到onKeyPress事件。
具体怎么办,查一下帖子就ok!
你把两句合成一句试试
我以前也遇到过同样的错误
adoquery1.sql.add('select * from b1 where mc like ''%'+trim(edit1.text)+'%''');
你的ADO没有加补丁,下载一个补丁吧。
adoquery1.sql.add('select * from b1 where mc like :v_name);
Parameters.ParamByName('V_Name').value:='%'+trim(edit1.text)++'%';
Open;
...
close;
请问下载补丁地址在哪?
我没想到有这么多人响应,看来给分少了,不好意思.
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from b1');
adoquery1.sql.add('where mc like ''%'+trim(edit1.text)+'%''');
adoquery1.Open;
if adoquery1.eof and adoquery1.bof then
begin
adoquery1.recordset.close;
adoquery1.close;
end;
就是ADO的问题
如果你要用ADO
要么下载补定要么在FORMCLOSE事件里加入
ADOQUER1。CLOSE;