50求教TADOQuery::Close()出错的问题

hahu 2004-07-22 03:22:42
一个多月前的程序重新编译。我在程序中这样用TADOQuery
query -> SQL -> Clear();
query -> SQL -> Add("select * from tablename");
query -> Open();
if(query->RecordCount > 0)
{
query -> First();
for(i = 0; i < query->RecordCount; i++)
{
...
query->Next();
}
query->Close();
上面记录循环都下来了,Close的时候竟然出错,
提示是"EOF 或 BOF 中有一个是真,或者当前的记录已被删除,所需操作要求一个当前记录",这个程序已经客户在使用了,原来编译的时候也没有出现这样的错误,
query->Close();前面加上query->First();就不会出错,实在不可思议,
请问这是怎么回事,有没有相关的文档说明
另外,使用的是Access数据库,我已经将原来的数据库用本机上的Access2000重新倒入了一下
...全文
130 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
constantine 2004-07-22
  • 打赏
  • 举报
回复
for(i = 0; i < query->RecordCount; i++) 改为:
-----------------------------------------------
for(i = 0; i < query->RecordCount-1; i++)

-----改变了原来的意思了,少自行了.....的代码

补丁现在又出了几个新的了,加起来近100M
ITsignal 2004-07-22
  • 打赏
  • 举报
回复
打补丁up4
Lonelywolf1899 2004-07-22
  • 打赏
  • 举报
回复
for(i = 0; i < query->RecordCount; i++) 改为:
-----------------------------------------------
for(i = 0; i < query->RecordCount-1; i++)
constantine 2004-07-22
  • 打赏
  • 举报
回复
for(i = 0; i < query->RecordCount; i++)
{
...
if(i!=query->RecordCount-1)
query->Next();
}
这样看看
hahu 2004-07-22
  • 打赏
  • 举报
回复
楼上的这位,谢谢回答,

不过你说的这样,和我说的那样,效果一样

up
kmfangxun 2004-07-22
  • 打赏
  • 举报
回复

for(i = 0; i < query->RecordCount; i++)
{
...
query->Next();
}


当i==query->RecordCount-1时;
for语句还要执行query->Next();这时query已经Eof了;至于为什么这时不能执行query->Close()? 我也不清楚.












kmfangxun 2004-07-22
  • 打赏
  • 举报
回复

for(i = 0; i < query->RecordCount; i++)
{
...
query->Next();
}

建议改为:

query->First();
while(!query->Eof)
{
...
query->Next();
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧