我有两个数据库,一个是Access,一个是SQL Server.要做到两个数据库同步更新,怎么搞啊?
主要是两个数据库不全一样,SQL Server数据库的字段包含Access的字段。我的笨办法就是用两套DataSource、DataSet、Query.一套对Access,一套对SQL Server,先对SQL Server写,然后提出一部分字段再对Access写。
我程序是这样写的:procedure TForm1.Button1Click(Sender: TObject);
var s1,s2:string;
begin
s1:=query1.fieldbyname('地区').asstring;
s2:=query1.fieldbyname('销售额').asstring;
with query1 do
begin
database1.starttransaction; //开始传输
try
applyupdates;
database1.commit; //提交数据
except
database1.rollback; //若提交失败,回滚
raise;
end;
commitupdates;
with query2 do
begin
query2.append;
query2.edit;
query2.fieldbyname('地区').asstring:=s1;
query2.fieldbyname('销售额').asstring:=s2;
database2.starttransaction; //开始传输
try
applyupdates;
database2.commit; //提交数据
except
database2.rollback; //若提交失败,回滚
raise;
end;
commitupdates;
end;
end;
end;结果出现问题了:SQL Server与Access有可能其中一个数据库没提交记录成功,另一个却提交成功了。如果解决同时提交成功,否则同时提交不成功。
主要是两个数据库不全一样,SQL Server数据库的字段包含Access的字段。我的笨办法就是用两套DataSource、DataSet、Query.一套对Access,一套对SQL Server,先对SQL Server写,然后提出一部分字段再对Access写。
我程序是这样写的:procedure TForm1.Button1Click(Sender: TObject);
var s1,s2:string;
begin
s1:=query1.fieldbyname('地区').asstring;
s2:=query1.fieldbyname('销售额').asstring;
with query1 do
begin
database1.starttransaction; //开始传输
try
applyupdates;
database1.commit; //提交数据
except
database1.rollback; //若提交失败,回滚
raise;
end;
commitupdates;
with query2 do
begin
query2.append;
query2.edit;
query2.fieldbyname('地区').asstring:=s1;
query2.fieldbyname('销售额').asstring:=s2;
database2.starttransaction; //开始传输
try
applyupdates;
database2.commit; //提交数据
except
database2.rollback; //若提交失败,回滚
raise;
end;
commitupdates;
end;
end;
end;结果出现问题了:SQL Server与Access有可能其中一个数据库没提交记录成功,另一个却提交成功了。如果解决同时提交成功,否则同时提交不成功。
with query1 do
begin
database1.starttransaction; //开始传输
try
applyupdates;
database1.commit; //提交数据
except
database1.rollback; //若提交失败,回滚
raise;
end;
with query2 do
begin
query2.append;
query2.edit;
query2.fieldbyname('地区').asstring:=s1;
query2.fieldbyname('销售额').asstring:=s2;
database2.starttransaction; //开始传输
try
applyupdates;
database2.commit; //提交数据
except
database2.rollback; //若提交失败,回滚
raise;
end;
commitupdates;
commitupdates;
end;
end;
里面有提供这个功能,可以做一个sql里面的数据库和access文件的数据进行同步,
然后在sql里面设置一些触发器,应该可以把功能实现
Access通過SQL Server去調用﹐操作的時候對ADOConnection進行事務處理就行