2010-08-28 69 views
2

我有一個應用程序在訪問(.mdb)中我的連接使用Microsoft.Jet.OLEDB.4.0製造工作,我NEAD導出MasterTable和detailtables(1,2,3)轉換爲XML有可能嗎? 如果可以,我可以在其他地方(通過電子郵件發送)打開並更新或插入數據庫?這些表格是相同的,只有我們處於無法融入數據庫網絡的地方。德爾福打開保存爲XML使用Microsoft.Jet.OLEDB.4.0(.mdb)中

Thank's

回答

2

你可以嘗試從您的訪問數據集複製數據到一些ClientDataSets並將它們保存爲XML。
然後,您可以分發XML文件,以便與您的應用程序的ClientDataSets一起使用,因爲這些應用程序沒有可用的連接。 (BriefCase模型)。
我強烈建議閱讀關於ClentDataSets(例如Cary Jensen的文章)。

+0

有沒有辦法將數據加載到我的數據集ADOTable1.LoadFromFile('c:\ test.xml')這種方式不適用於我的數據庫的數據 – 2010-09-06 21:35:50

0

您可以使用ADOTable導出或導入表中的XML格式。 代碼: 出口:

ADOTable1.SaveToFile('c:\test.xml',pfXML); 

進口:

ADOTable1.LoadFromFile('c:\test.xml'); 
+0

是的,這是我揉。我如何保存和加載Masterdataset字段和詳細字段。 master.First; 而不是Mastertable.Eof做開始 Masterfield1 ............... Mastertable.next; 結束, detail.First; 雖然不詳細。但確實開始 明細欄........................ detail.next; ............ detailfiel_1 ............ detailfiel_2 Masterfield2 ............ detailfiel_1 ..... ....... detailfiel_2 – 2010-08-29 10:18:53

+0

嗨,當我嘗試ADOTable1.Post;不會工作有另一種方式?('c:\ test.xml') ADOTable1.UpdateBatch(arall); ADOTable1.Post; – 2010-08-29 17:07:17

0

您可以使用SimpleStorage,並推出自己的ADOTable數據適配器。

該單位Cromis.SSA.DataSet可以作爲一個很好的起點。

3

當您使用ADODataSet1.LoadFromFile('c:\test.xml')你實際上是創建一個斷開DataSet

你的選擇是創建一個臨時TADODataSetMyXMLDataSet)。
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; 

注:上面的代碼沒有優化/測試。