首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

有没有办法 提高 ACCESS的复制速度 ?有代码帮看下,该如何解决

2012-03-17 
有没有办法 提高 ACCESS的复制速度 ??有代码帮看下......for (i0i SDBGrid-SelectedRows-Counti++){

有没有办法 提高 ACCESS的复制速度 ??有代码帮看下
......
for (i=0;i <SDBGrid->SelectedRows->Count;i++) 
  { 
  SAdoTable->GotoBookmark((void *)SDBGrid->SelectedRows->Items[i].c_str()); //DBGrid控件 选中多行
  DAdoTable->Append(); 
  for (j=0;j <SAdoTable->FieldCount;j++) 
  { 
  if(SAdoTable->Fields->Fields[j]->DataType==ftAutoInc) 
  continue; 
  DAdoTable->Fields->Fields[j]->Value=SAdoTable->Fields->Fields[j]->Value; 
  } 
  } 

......

经测试 ,就是这个for语句慢,有没有办法 提高它的速度呢?比如用一条SQL语句,我想过用表复制,但没办法解决
SAdoTable->GotoBookmark((void *)SDBGrid->SelectedRows->Items[i].c_str()); 
不知哪个有办法 解决????

解决后加100分,

在http://topic.csdn.net/u/20090620/23/550d12c7-4a2d-46a2-841e-16ac8533a13a.html这里我也发了帖,但没有解决问题

[解决办法]
我建议将选中行的ID记录下来,然后用一条SQL语句来搞定复制这个操作,筛选条件用多个"or Id=XX"连接起来。
[解决办法]
把什么 for (j=0;j <SAdoTable->FieldCount;j++) 

if(SAdoTable->Fields->Fields[j]->DataType==ftAutoInc) 
continue; 
DAdoTable->Fields->Fields[j]->Value=SAdoTable->Fields->Fields[j]->Value; 
  }
改为 
  sql_temp="or 关键字段名="+DAdoTable->Fields->Fields[关键字序号]->Value;

最后sql_temp="insert into 目标表名 select 需要的字段 from 源表名 where 1<>1 "+ sql_temp不可以吗?

[解决办法]
可以在源目标表增加字段吗,这样就可以记录被选择的行而且速度应该还可以?
[解决办法]
怎么会慢呢,是改变记录字段时慢(就鼠标点选的时候记可以记录,不会点鼠标的时候飞快吧,汗),还是插入时慢(就一句SQL语句就搞定了),不可能吧!对了,你的源表有多大,还是不是固定表?

热点排行