Access数据库的合并

时间:2012-08-09 11:11:56

标签: vb.net ms-access merge

我正在尝试在 VB.net 中编写一个程序,这是一个'花式'数据库前端。 该程序的目的是将数据库本地存储在用户机器上,从“服务器”数据库所在的共享位置。

本地和服务器副本都存储在数据集中,然后程序检查服务器副本以查看它最近是否有任何更新。如果是,则只下载更新以减少带宽。

我要做的是强制本地数据库承担服务器数据库的更改。但是,当使用data-adapter.update时,它没有注意到任何更改,因为它重新加载服务器数据集的方式是清除它,并从头开始重新加载。

是否有任何有效的方法将服务器数据集强制转换为本地数据集,然后强制本地数据集在BGW中重写数据库?正如我之前所说的,如果我只清除本地的一个并将服务器复制到本地,那么data-adapter.update似乎不会保存更改。

道歉,如果我完全走错了路。任何建议或指导将不胜感激。

约翰

    dsLocalDB.Clear() 'Clear the local dataset
    dsLocalDB = dbServerDB.Copy 'copy the server dataset to the local dataset
    LoadData() 'let the application reload all the new records


    Dim cb As New OleDb.OleDbCommandBuilder(daLocalDB) 'Create a COmmand Builder
    For i = 1 To TableNames.GetUpperBound(0) 'Loop through all the tables which have been stored as an array
        For Each row As DataRow In dsLocalDB.Tables(TableNames(i)).Rows 'Loop through the rows, so we can see if it detects modified data. For testing purposes.
            If row.RowState = DataRowState.Modified Then 'Its found modified data!
                MsgBox("Found Modified Data Row!") 'Output a message
                Exit For 'exit the for loop
            End If
        Next
        daLocalDB.Update(dsLocalDB, TableNames(i)) 'Update the local database
    Next i

1 个答案:

答案 0 :(得分:2)

你可能想看看这个:

http://www.codeproject.com/Articles/18027/Take-Data-Offline-Using-Microsoft-Synchronization

PS:
如果你愿意接受善意的建议:你做错了。不要保留两个数据库。
同步两个数据库是一个非常微妙的过程。
甚至群集应用程序也使用实时同步 如果你没有几年的经验,你很快就会产生混乱 阅读文章中的免责声明(无保证,明示,默示或法定)。