procedure move_datatoNewkeycode(newkeycode,oldkeycode:string);
var
str:string;//***********子函数**************修改并写到表里
procedure updatedata(strtablename:string);
var
tmpquery:Tquery;
i:integer;
TmpDir,VarField,tmpstr0,tmpstr1:string;
CustTable:TTable;
CustQry:TQuery;
CustBatmove:TBatchMove;
DONE:boolean;
begin
//创建临时表并查询出数据
CustTable:=TTable.Create(self);
with CustTable do
begin
Active:=False;
DatabaseName:=tempalias;
TableType:=ttdefault;
TableName:='TaskDone.DBF';//临时用
with FieldDefs do
begin
Clear;
Add('Field1', ftInteger, 0, True);
end;
CreateTable;
end; CustQry:=TQuery.Create(self);
with CustQry do
begin
Active:=False;
DatabaseName:='fcgl';
close;
Sql.Clear;
Params.Clear;
Sql.Add('select * from '+strtablename+ ' where keycode=:keycode');
parambyname('keycode').asstring:=oldkeycode;
CustBatmove:=TBatchMove.Create(self);
with CustBatmove do
begin
Destination:=CustTable;
Source:=CustQry;
Mode:=BatCopy;
Execute;
end; CustQry.Free;
CustBatmove.Free;
CustTable.Free;
//修改临时表
with p_dm_log.qry_tmp do
begin
DatabaseName:=tempalias;
Close;
Sql.Clear;
Params.Clear;
Sql.Add('update taskdone set keycode=:keycode');
parambyname('keycode').asstring:=newkeycode;
execsql;
end;
with p_dm_log.qry_tmp do
begin
DatabaseName:=tempalias;
Close;
Sql.Clear;
Params.Clear;
Sql.Add('select * from taskdone');
open;
end;
//追加到表
CustTable:=TTable.Create(self);//连接到sql server
with CustTable do
begin
Active:=False;
DatabaseName:='fcgl';
TableType:=ttdefault;
TableName:=strtablename;
end;
CustBatmove:=TBatchMove.Create(self);
with CustBatmove do
begin
Destination:=CustTable;
Source:=p_dm_log.qry_tmp;
Mode:=batAppend;
Execute;
end;
CustBatmove.Free;
CustTable.Free;
end;
end;
begin begintransaction;//开始个事务
with p_dm_log.qry_log do
begin
updatedata('workstep'); //速度快
updatedata('filein'); //速度慢
updatedata('info');
updatedata('land');
updatedata('room');
updatedata('build'); //其慢无比committransaction;//提交事务
end;
var
str:string;//***********子函数**************修改并写到表里
procedure updatedata(strtablename:string);
var
tmpquery:Tquery;
i:integer;
TmpDir,VarField,tmpstr0,tmpstr1:string;
CustTable:TTable;
CustQry:TQuery;
CustBatmove:TBatchMove;
DONE:boolean;
begin
//创建临时表并查询出数据
CustTable:=TTable.Create(self);
with CustTable do
begin
Active:=False;
DatabaseName:=tempalias;
TableType:=ttdefault;
TableName:='TaskDone.DBF';//临时用
with FieldDefs do
begin
Clear;
Add('Field1', ftInteger, 0, True);
end;
CreateTable;
end; CustQry:=TQuery.Create(self);
with CustQry do
begin
Active:=False;
DatabaseName:='fcgl';
close;
Sql.Clear;
Params.Clear;
Sql.Add('select * from '+strtablename+ ' where keycode=:keycode');
parambyname('keycode').asstring:=oldkeycode;
CustBatmove:=TBatchMove.Create(self);
with CustBatmove do
begin
Destination:=CustTable;
Source:=CustQry;
Mode:=BatCopy;
Execute;
end; CustQry.Free;
CustBatmove.Free;
CustTable.Free;
//修改临时表
with p_dm_log.qry_tmp do
begin
DatabaseName:=tempalias;
Close;
Sql.Clear;
Params.Clear;
Sql.Add('update taskdone set keycode=:keycode');
parambyname('keycode').asstring:=newkeycode;
execsql;
end;
with p_dm_log.qry_tmp do
begin
DatabaseName:=tempalias;
Close;
Sql.Clear;
Params.Clear;
Sql.Add('select * from taskdone');
open;
end;
//追加到表
CustTable:=TTable.Create(self);//连接到sql server
with CustTable do
begin
Active:=False;
DatabaseName:='fcgl';
TableType:=ttdefault;
TableName:=strtablename;
end;
CustBatmove:=TBatchMove.Create(self);
with CustBatmove do
begin
Destination:=CustTable;
Source:=p_dm_log.qry_tmp;
Mode:=batAppend;
Execute;
end;
CustBatmove.Free;
CustTable.Free;
end;
end;
begin begintransaction;//开始个事务
with p_dm_log.qry_log do
begin
updatedata('workstep'); //速度快
updatedata('filein'); //速度慢
updatedata('info');
updatedata('land');
updatedata('room');
updatedata('build'); //其慢无比committransaction;//提交事务
end;
解决方案 »
- delphi7读取硬盘物理序列号的方法
- 用delphi7编了一个ftp下载东西的程序,当下载量超过2.097G的时候ftp断开连接,请高手赐教
- TeeChart6打印预览边距及打印设置问题,急!!!
- delphi7.0 sql查詢問題。
- TCombBox控件的使用问题求解?
- 请问有没有好的图标库下载(工具栏的那种图标)??在线
- 急寻:谁有Delphi6 Sp2的升级补丁的下载地址。
- 一个Filter的问题
- 如何实现这样的功能,在数据库的表中设计一个字段,用来存图片,请问如何把图片放进去,如何取出来,最好有实例?
- 如何管理文件夹的存储空间,高分求救!!!!!!
- 要得到其实某一例的和,该怎么做
- 招聘:开发工程师
然后一次性地batchmove处理
我看你的matchmove释放了两次
再者,batchmove需要事务吗?不需要事务就可以的。