我有一个使用访问(.mdb)的应用程序我的连接是使用Microsoft.Jet.OLEDB.4.0进行的,我需要将MasterTable和detailtables(1,2,3)导出到XML是否可能? 如果有可能我可以在其他地方(通过电子邮件发送)打开并更新或插入数据库?这些表是相同的,只是我们在某个地方无法连接到数据库所在的网络。
谢谢
答案 0 :(得分:3)
当您使用ADODataSet1.LoadFromFile('c:\test.xml')
时,实际上是在创建一个已断开连接的DataSet
。
您的选择是创建一个临时TADODataSet
(MyXMLDataSet
)
MyXMLDataSet
不需要Connection
对象(或连接字符串)。
使用MyXMLDataSet.LoadFromFile('c:\test.xml')
,然后逐行迭代,并将新行发布到ADOTable1
或修改现有行。
以下是一个例子:
MyXMLDataSet := TADODataSet.Create(nil);
try
MyXMLDataSet.LoadFromFile('c:\test.xml');
ADOTable1.Connection.BeginTrans;
try
while not MyXMLDataSet.Eof do
begin
if not ADOTable1.Locate('ID', MyXMLDataSet.FieldByName('ID').AsString, []) then
begin
// add new record
ADOTable1.Append;
ADOTable1.FieldByName('ID').AsString := MyXMLDataSet.FieldByName('ID').AsString;
// other fields...
ADOTable1.Post;
end
else
begin
// edit record
end;
MyXMLDataSet.Next;
end; // while
ADOTable1.Connection.CommitTrans;
except
ADOTable1.Connection.RollbackTrans;
raise;
end;
finally
MyXMLDataSet.Free;
end;
注意:上面的代码未经过优化/测试。
答案 1 :(得分:2)
您可以尝试将数据从Access数据集复制到某些ClientDataSet中,并将它们保存为XML。
然后,您可以分发XML文件,以便与没有可用连接的应用程序的ClientDataSets一起使用。 (BriefCase模型)。
我强烈建议阅读关于ClentDataSets(例如Cary Jensen的文章)。
答案 2 :(得分:0)
您可以使用ADOTable
以XML格式导出或导入表格。
代码:
出口:
ADOTable1.SaveToFile('c:\test.xml',pfXML);
用于导入:
ADOTable1.LoadFromFile('c:\test.xml');
答案 3 :(得分:0)
您可以使用SimpleStorage并滚动自己的ADOTable数据适配器。
单位 Cromis.SSA.DataSet 可以作为此目的的良好起点。