有没有办法 提高 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语句就搞定了),不可能吧!对了,你的源表有多大,还是不是固定表?