使用Microsoft.Jet.OLEDB.4.0(.mdb)将Delphi Open保存到XML

时间:2010-08-28 21:39:16

标签: xml delphi ado

我有一个使用访问(.mdb)的应用程序我的连接是使用Microsoft.Jet.OLEDB.4.0进行的,我需要将MasterTable和detailtables(1,2,3)导出到XML是否可能? 如果有可能我可以在其他地方(通过电子邮件发送)打开并更新或插入数据库?这些表是相同的,只是我们在某个地方无法连接到数据库所在的网络。

谢谢

4 个答案:

答案 0 :(得分:3)

当您使用ADODataSet1.LoadFromFile('c:\test.xml')时,实际上是在创建一个已断开连接的DataSet

您的选择是创建一个临时TADODataSetMyXMLDataSetMyXMLDataSet不需要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 可以作为此目的的良好起点。