代码中adoquery3的数据源为sql sever,adoquery1的数据源为oracle,分别连接两个字段名和顺序相同的表,程序的目的是让两个数据库中的表同步。每次对sql server的中表进行数据变更,之后复制到oracle中。
try adoquery3.Filtered := false;
showmessage(inttostr(adoquery3.RecordCount));//这儿MESSAGEBOX显示adoquery3的行数为7行,说明adoquery3中有数据。
adoquery3.Clone(adoquery1,ltbatchOptimistic);
showmessage(inttostr(adoquery1.RecordCount));//这个MESSAGEBOX显示adoquery1的行数为0行,说明clone没有成功。
adoconnection1.BeginTrans;
adoconnection3.BeginTrans;
adoquery1.UpdateBatch;
adoquery3.UpdateBatch;
adoconnection1.CommitTrans;
adoconnection3.CommitTrans;
except
{adoquery1.CancelUpdates;}
showmessage('导入失败!请核实后重新导入!');
adoquery1.CancelBatch;
adoquery3.CancelBatch;
adoconnection1.RollbackTrans;
adoconnection3.RollbackTrans;
Abort;
raise;
end;请大虾们帮帮忙啊
try adoquery3.Filtered := false;
showmessage(inttostr(adoquery3.RecordCount));//这儿MESSAGEBOX显示adoquery3的行数为7行,说明adoquery3中有数据。
adoquery3.Clone(adoquery1,ltbatchOptimistic);
showmessage(inttostr(adoquery1.RecordCount));//这个MESSAGEBOX显示adoquery1的行数为0行,说明clone没有成功。
adoconnection1.BeginTrans;
adoconnection3.BeginTrans;
adoquery1.UpdateBatch;
adoquery3.UpdateBatch;
adoconnection1.CommitTrans;
adoconnection3.CommitTrans;
except
{adoquery1.CancelUpdates;}
showmessage('导入失败!请核实后重新导入!');
adoquery1.CancelBatch;
adoquery3.CancelBatch;
adoconnection1.RollbackTrans;
adoconnection3.RollbackTrans;
Abort;
raise;
end;请大虾们帮帮忙啊
2、就算能传送数据,记录必须处于修改、删除、新增的状态才能用UpdateBatch(arAll);回写入数据库。
3、 如果你使用的是sqlserver数据库,建议使用opensource进行数据库数据复制,否则就只能一条一条的插入
Source.Fields[i].Value := Dest.Fields[i].Value;