ADOQuery连接SQL Sever数据库的简单问题(100分)

  • 主题发起人 主题发起人 BlackHawk
  • 开始时间 开始时间
B

BlackHawk

Unregistered / Unconfirmed
GUEST, unregistred user!
我用了一个ADOConnection和一个ADOQuery连接SQL Sever数据库进行数据的查询,但是每当
我输入查询条件在数据库中找不到记录时,却总是出错,我的程序如下:
var
strsql:string; //sql语句
strname:string; //名称
with ADOQuery do
begin
close;
prepared:=False;
sql.clear;
strsql:='select * from table where name='+''''+edit1.text+'''';
sql.add(strsql)
prepared:=True;
open;
strname:=adoquery.filedbyname('name').asstring;
close; //如果没有查询结果,当程序执行到这一句时,出错,有查询结果时不出错

出错的现象如下:
BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前记录。
我百思不得其解,用别的数据库时没有发现这个问题,SQL Sever在查询不出记录的情况
下难道不允许关闭adoquery?
请有开发SQL Sever经验的程序员指点一二,你们是怎么做的?
 
Delphi5吧?去DOWNLOAD补定包,不过DELLHI5的ADO还有其他BUG或者去搞一个delphi6
 
并不是CLOSE的错,是
strname:=adoquery.filedbyname('name').asstring;的错
当查询结果为空时,不存在adoquery.filedbyname('name').asstring,
 
if not varisnull(adoquery.filedbyname('name').asstring) then
strname:=adoquery.filedbyname('name').asstring;
 
田伯光说的对,是Delphi5 中ADOQuery的一个Bug来的.
 
按你的说法我做了测试,好像没有你说的错误,我是DELPHI6 +SP2 ,
不知道你是否安装了升级包
procedure TForm1.Button1Click(Sender: TObject);
var
strsql:string; //sql语句
strname:string; //名称
begin
with ADOQuery1 do
begin
close;
prepared:=False;
sql.clear;
strsql:='select * from 客户 where 客户名称='+''''+edit1.text+'''';
sql.add(strsql);
prepared:=True;
open;
strname:=adoquery1.fieldbyname('客户名称').asstring;
close; //如果没有查询结果,当程序执行到这一句时,出错,有查询结果时不出错
end;
end;
 
感谢各位
我的程序都用delphi5写完了,以前用的是parodox,现在客户要求改成网络版,才临时用
sqlsever的。
除了升级补丁,有没有什么办法可以绕过去?
另外:fastreport for D6的哪里有下,实在不行我用D6重新来一遍
 
http://info.borland.com/devsupport/delphi/mdac26.html
去下载,老问题了!给分啊!
 
那么如故不成你再加一句:
if not Query1.IsEmpty then
strname:=adoquery1.fieldbyname('客户名称').asstring;
else Begin End;
Close
 
可是我得把它关掉啊
 
同意ZQFILE,问题出在程序里面,根其他无关!
 
覺得ZQFILE說的有理﹗

try
strname:=adoquery1.fieldbyname('客户名称').asstring;
except
showmessage('沒有你查詢的數據');
end;
 
跟程序没关系,我反复试了,即使用select * from table,数据库里不放入数据
那么,当query.close时仍会出错,可能就是大家说的,需要打补丁,现在我已经把
d5adoupdate2下来了,update1到哪里下?
 
update1不用打补丁
 
可borland说先打update1再打update2的
 
borland說update1有問題﹗
 
谢谢,我先试试,回来给分
 
程序要加上一名
if not ADOQuery.eof then
begin
......
end;
  另外要打补丁:
专业版:补丁1+补丁2;
企业版:企业片补丁+补丁2;
 
if not varisnull(adoquery.filedbyname('name').asstring) then
strname:=adoquery.filedbyname('name').asstring;
close;
 
>>黑鹰
老哥,你早点到我给你的网址上看看就完了!(出错信息都和你一样的,虽然是E文的)
 
后退
顶部