关于ADOQuery的问题。(50分)

  • 主题发起人 主题发起人 Hexi
  • 开始时间 开始时间
H

Hexi

Unregistered / Unconfirmed
GUEST, unregistred user!
远程数据模块中有下面一段程序:
tbLogin是一个ADOQuery.

tbLogin.SQL.Text:=Format('select * from vwManager where Upper(FName)=Upper(''%s'') and FPassword=''%s''',
[Name, Password]);
tbLogin.Open;
if tbLogin.RecordCount<1 then
//当返回记录数为0时
begin
tbLogin.Close;//每次执行到这里就出现错误:
//“Either BOF or EOF is True, or the current record has been deleted.
//Requested operation requires a current record”
//请问如何解决?
end
 
plz use this:
if tbLogin.eof or tbLogin.bof then

....
 
改为if tblogin.eof then
好象是ADO的问题。在ASP中也是这样,发生在访问空的数据集时。
 
我也遇到过这样的问题。
在WINDOWS2000下,原先程序都正常,安装了SQL2000后出现该问题。
Either BOF or EOF is True, or the current record has been deleted.
Requested operation requires a current record”
使用AdoExpress升级也不行,急盼高手能解决。
 
其实在运行Close是就出错。
在许多情况下是要Close Query,并未判断RecordCount的。
所以单纯用Eof是不行的。
 
没有任何问题!!!!!!!
With ADOQuery1do
begin
if Active then
Close ;
SQL.Text := Memo1.Text ;
Open ;
if RecordCount = 0 then
Close ;
end ;
你的ADO Update(For Delphi5)安装了吗?
 
asp中也有这样的问题
从有的书上说ado的recordcount数据不是很准确
我的一个朋友思过,确实不对
我一般用eof来判断
但在asp中似乎close市不会出问题
这可能是delphi的bug把
打个补丁试试
如果还不行
就用try把(我觉得我用try都有点用烂了,有没有人有更好的方法?)
 
请问cmldy那有 ADO Update?
我觉得是sql server 2000的八哥
 
我在SQL SERVER 7+D5下运行没有问题的啊!
 
tbLogin.SQL.disableControls;
if tbLogin.RecordCount<1 then
//当返回记录数为0时 you can writ "if bof and eof then
"
or if (recordcount > 0) and (recordcount = 1) then
begin
tbLogin.SQL.unprepare;

tbLogin.Close;//每次执行到这里就出现错误:
//“Either BOF or EOF is True, or the current record has been deleted.
//Requested operation requires a current record”
//请问如何解决?
tblogin.sql.clear;
end
tbLogin.SQL.enablecontrols;
 
rax:
我用你的方法还是不行,我用的是TADOQuery没有unprepare,我将TADOQuery的Prepared属性该为了False也不行。
tbLogin.DisableControls;
if tbLogin.RecordCount<1 then
//当返回记录数为0时 you can writ "if bof and eof then
"
or if (recordcount > 0) and (recordcount = 1) then
begin
tbLogin.SQL.unprepare;

tbLogin.Close;//每次执行到这里就出现错误:
//“Either BOF or EOF is True, or the current record has been deleted.
//Requested operation requires a current record”
//请问如何解决?
tblogin.sql.clear;
end
tbLogin.EnableControls;
 
试试
if adoquery.isempty then
 
我的问题是如何关闭一个无记录的TADOQuery,而不是判断是否无记录?
 
With tbLogindo
begin
Close;
SQL.Clear;
SQL.Add(Format('select * from vwManager where Upper(FName)
= Upper(''%s'') and FPassword=''%s''',[Name, Password]));
Open;
/////////////////////////////
if RecordCount<1 then
Close;
end;

(try once !!! ^O^)
 
charlie chen:一样的出错。
 
出错提示。SQL语句是否正确。
 
这个问题好像是ADO2.6新带来的,我在许多网上都看到这个问题。
解决方法:
用ADO2.5的msado15.dll(日期:2000.1.10) 替换 ADO2.6的msado15.dll(日期:2000.7.27)
"msado15.dll" 在 C:/Program Files/Common Files/SYSTEM/ADO 中可以找到
 
大文,好象该方法不行呀!我在别人机器上按mdac 2.5将msado15.dll copy 到该目录下!
不幸,不行!你真的试过了?算了,我现在改回去,用 MIDAS远程服务器+query!
 
肯定没有问题,不过我这里有一个更好的补丁程序,我已经发給你。
 
后退
顶部