ADO简单问题,Help(200分)

  • 主题发起人 主题发起人 chuwenyong
  • 开始时间 开始时间
C

chuwenyong

Unregistered / Unconfirmed
GUEST, unregistred user!
我用ADOConnect连接到Access 2000数据库,用ADOquery查询数据。第一次查没问题,但
是第二次查则提示:qrytemp:Cannot perform this operation on an open dataset'
我觉得它提示我没有关闭数据库,于是我在query查询完后,就关闭,又提示:
...raised exception class EOleException with message 'BOF 或 EOF 中有一个是“真”
,或者当前的记录已被删除,所需的操作要求一个当前的记录。'
噻,到底如何是好?
代码如下:
代码:
.,...
   with qrytemp do
   begin
       Sql.Clear;
       Sql.Add('Select * from table1');
       while not eof do
       begin
           listbox.Itmes.Add(FeiledByName('aa').value);
           next;
       end;
   end;
....这样第一次没错,再执行第二次则出错提示为上面第一条。改成如下:
   with qrytemp do
   begin
       Sql.Clear;
       Sql.Add('Select * from table1');
       while not eof do
       begin
           listbox.Itmes.Add(FeiledByName('aa').value);
           next;
       end;
       Close;
   end;
...这样的话,第一次执行就出错,提示如上2.
该怎么办??
 
你下载一个新版的ado安装一下
这是ado的版本太旧
 
升级你的ado;
你可以在大富翁上搜索很多;
 
你应该先把qrytemp关闭掉,然后再写SQL语句,在打开qrytemp
如下面的格式;
qrytemp.close;
qrytemp.sql.clear;
qrytemp.sql.add('');
qrytemp.open;
 
在Sql.Add('Select * from table1');后加一行
open;
 
这样看看
with qrytemp do
begin
close;//先关闭!
Sql.Clear;
Sql.Add('Select * from table1');
open;//再打开!
while not eof do
begin
//listbox.Itmes.Add(FeiledByName('aa').value);
listbox.items.add(FieldByName('aa').value);
next;
end;
Close;
end;
 
with qrytemp do
begin
Close;
Sql.Clear;
Sql.Add('Select * from table1');
Open;
while not eof do
begin
listbox.Itmes.Add(FeiledByName('aa').value);
next;
end;
end;
 
安装Delphi5的两个ADO升级包就可以了
 
下载这两个补丁包:
ftp://ftpc.borland.com/pub/delphi/devsupport/updates/delphi5/D5EntUpdate.exe
ftp://ftpc.inprise.com/pub/delphi/devsupport/updates/adoexpress/d5adoupdate2.exe

sn:555-555-5555 9ex0-91x0
 
qrytemp沒有關閉,在查詢前應加上
qrytemp.close
 
呵呵,谢谢各位,最终解决结果是:
一、升级ADO
二、打开后再关闭。
一切OK了。呵呵,发分。
9 个人,不好分,呵呵,还是先给第一个提出升级的富翁多加10分,提供下载地址的富翁加
10分,
 
后退
顶部