ADOQuery异步方式从access 中SELECT了3000条记录,并在wwDBGrid中显示不到1秒就完成了,但是

cloudred 2004-08-11 10:28:47
ADOQuery异步方式从access 中SELECT了3000条记录,并在wwDBGrid中显示不到1秒就完成了.

问题是:我要把这3000条记录的某一字段的值放进一个 StringList.

采用 for(int i=0;i<ADOQuery1- >RecordCount;i++)
{
//把当前记录指定字段值加入StringList
......
ADOQuery1->Next();
}

速度太慢,不能接受,有没有其他办法?
...全文
268 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
bcbsoft 2004-08-12
  • 打赏
  • 举报
回复
试试这样:

ADOQuery1->DisableControls();
ADOQuery1->First();

for(int i=0;i<ADOQuery1- >RecordCount;i++)
{
//把当前记录指定字段值加入StringList
......
ADOQuery1->Next();
}

ADOQuery1->EnableControls();
cloudred 2004-08-12
  • 打赏
  • 举报
回复
内存表?
kmfangxun 2004-08-12
  • 打赏
  • 举报
回复
查旬前:

TDataSource->Enabled=false;

查旬后 :

TDataSource->Enabled=true;
lidawen 2004-08-12
  • 打赏
  • 举报
回复
樓上說得對,
先可以wwDBGrid設置為關閉狀態,把數據報存到StringList,
然后再設置wwDBGrid連接ADOQuery .
cloudred 2004-08-12
  • 打赏
  • 举报
回复
这么说的话,因为ADOQuery和wwDbgrid相关联。

ADOQuery next的时候,wwdbgrid相应也要联动,也浪费时间。

可不可以不用ADOQuery next来遍历记录?

jiangchun_xn 2004-08-12
  • 打赏
  • 举报
回复
select 仅仅得到记录指针集,等到真正需要数据的时候还是再会到硬盘上读的。
cloudred 2004-08-12
  • 打赏
  • 举报
回复
不是用户的问题,是我自己觉得慢。
kmfangxun 2004-08-12
  • 打赏
  • 举报
回复

3000条记录应该不会很慢,不过如果用户觉得太慢,不妨加个进度条。
happyct 2004-08-11
  • 打赏
  • 举报
回复
怎么可能?不会慢的。我也这样用
cloudred 2004-08-11
  • 打赏
  • 举报
回复
我怎么看不到自己的帖子?
Persistent8813 2004-08-11
  • 打赏
  • 举报
回复
其实就是一个只有一个字段的内存表啊
cloudred 2004-08-11
  • 打赏
  • 举报
回复
当然快慢是相对的.

我想实现和异步执行select相差不多的速度即可,但前面的方式和这个期望有一定的差距.

从异步执行select的速度来看,这个问题应该是可以实现的,期待各位大虾给以指导.

或者我的问题描述的不是很清楚,换一种说法是:

现在的做法是异步执行select完成后,然后再移动记录集将记录的字段的值放进StringList中,而移动记录集显然应该是冗余的步骤,造成速度变慢.

能不能在异步执行select的同时, 将记录的字段的值放进StringList中?


wuxq7311 2004-08-11
  • 打赏
  • 举报
回复
应该不是很慢啊,是不是机器的问题?
Lonelywolf1899 2004-08-11
  • 打赏
  • 举报
回复
不是太慢就行了,问问用户,可以忍受几秒钟?
CB1013 2004-08-11
  • 打赏
  • 举报
回复
用存储过程写把结果集传到StringList

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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