ACCESS中用ADOTable的查询两个数据库之间进行数据修改,怎么提高处理速度 ( 积分: 50 )

  • 主题发起人 主题发起人 shadong
  • 开始时间 开始时间
S

shadong

Unregistered / Unconfirmed
GUEST, unregistred user!
ShaDataDm.ADOTable1.Open;
ShaDataDm.ADOTable1.First;
while not DataDm.ADOTable1.eof do
begin
with ShaDataDM.ADOQuery1 do
begin
SQL.Clear;
SQL.Add('update 资料库 set 名称=名称1 where 序号=序号1');
parameters.ParamByName('名称1').value:=ShaDataDm.ADOTable1.FieldValues['名称1'];
parameters.ParamByName('序号1').value:=ShaDataDm.ADOTable1.FieldValues['序号'];
ExecSQL;
end;
ShaDataDm.ADOTable1.Next ;
end;


用这样的方法处理数据库的更新,速度好慢,有什么方法可以提高处理速度,优化这段代码,当两个数据库都有10000条记录,处理时间在10分钟左右
 
ShaDataDm.ADOTable1.Open;
ShaDataDm.ADOTable1.First;
while not DataDm.ADOTable1.eof do
begin
with ShaDataDM.ADOQuery1 do
begin
SQL.Clear;
SQL.Add('update 资料库 set 名称=名称1 where 序号=序号1');
parameters.ParamByName('名称1').value:=ShaDataDm.ADOTable1.FieldValues['名称1'];
parameters.ParamByName('序号1').value:=ShaDataDm.ADOTable1.FieldValues['序号'];
ExecSQL;
end;
ShaDataDm.ADOTable1.Next ;
end;


用这样的方法处理数据库的更新,速度好慢,有什么方法可以提高处理速度,优化这段代码,当两个数据库都有10000条记录,处理时间在10分钟左右
 
ADOQuery1.CursorType := ctOpenForwardOnly ;
ADOQuery1.LockType := ltBatchOptimistic ;
ADOQuery1.Connection.CursorLocation:= clUseServer ;
ADOQuery1.MarshalOptions := moMarshalModifiedOnly ;
ADOQuery1.ParamCheck := false ;
 
楼上的,这些参数应加在那里,起什么作用
 
界面代码都可以设,起什么用看帮助
最后别忘了调用
ADOQuery1.UpdateBatch;
 
ParamCheck没有这个属性
如果我程序代码如上,我应该怎么加载?
 
可能你用的是d6,才没这个属性。ID:3126236 放到最前边ADOQuery1.UpdateBatch;放到最后
 
我是在属性中设,还是在代码中加:

ShaDataDm.ADOTable1.Open;
ShaDataDm.ADOTable1.First;
ADOQuery1.CursorType := ctOpenForwardOnly ;
ADOQuery1.LockType := ltBatchOptimistic ;
ADOQuery1.Connection.CursorLocation:= clUseServer ;
ADOQuery1.MarshalOptions := moMarshalModifiedOnly ;
ADOQuery1.ParamCheck := false ;
while not DataDm.ADOTable1.eof do
begin
with ShaDataDM.ADOQuery1 do
begin
SQL.Clear;
SQL.Add('update 资料库 set 名称=名称1 where 序号=序号1');
parameters.ParamByName('名称1').value:=ShaDataDm.ADOTable1.FieldValues['名称1'];
parameters.ParamByName('序号1').value:=ShaDataDm.ADOTable1.FieldValues['序号'];
ExecSQL;
end;
ShaDataDm.ADOTable1.Next ;
ADOQuery1.UpdateBatch;
end;

这样好像不行,我d7中没有 ParamCheck没有这个属性输入ADOQuery1.点后不会有这个属性
 
我在ado我是在属性中设,还是在代码中加:

ShaDataDm.ADOTable1.Open;
ShaDataDm.ADOTable1.First;

ADOQuery1属性表中改,还是在代码中加????????????
 
顶上去,请高手助
 
用SQL语句连表更新,速度最快.
如果是ACCESS如下:
update table1 as A,talbe2 as B set A.field1=B.field1 where A.field2=B.field2
即可.
如果是SQL SERVER
update table1 set A.field1=B.field1 from table1 as A,talbe2 as B where A.field2=B.field2

看看ok否
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部