Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net Access数据库的合并_Vb.net_Ms Access_Merge - Fatal编程技术网

Vb.net Access数据库的合并

Vb.net Access数据库的合并,vb.net,ms-access,merge,Vb.net,Ms Access,Merge,我正试图在VB.net中编写一个程序,这是一个“奇特”的数据库前端。 该程序要做的是将数据库从“服务器”数据库所在的共享位置本地存储在用户计算机上 本地副本和服务器副本都存储在数据集中,然后程序检查服务器副本以查看其最近是否有任何更新。如果有,它只会下载更新以减少带宽 我试图做的是强制本地数据库接受服务器数据库的更改。但是,当使用data-adapter.update时,它不会注意到任何更改,因为它重新加载服务器数据集的方式是清除数据集,然后从头开始重新加载 有没有有效的方法将服务器数据集强制放

我正试图在VB.net中编写一个程序,这是一个“奇特”的数据库前端。 该程序要做的是将数据库从“服务器”数据库所在的共享位置本地存储在用户计算机上

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

我试图做的是强制本地数据库接受服务器数据库的更改。但是,当使用data-adapter.update时,它不会注意到任何更改,因为它重新加载服务器数据集的方式是清除数据集,然后从头开始重新加载

有没有有效的方法将服务器数据集强制放到本地数据集上,然后强制本地数据集在BGW中重新写入数据库?如前所述,如果我只是清除本地适配器并将服务器适配器复制到本地适配器,data-adapter.update似乎不会保存更改

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

约翰


您可能想看看这个:

PS:
如果你愿意接受善意的建议:你做错了。永远不要保留两个数据库
同步两个数据库是一个非常微妙的过程
甚至群集应用程序也使用实时同步。
如果你没有几年的经验,很快就会造成混乱。

阅读文章中的免责声明(无任何明示、暗示或法定保证)。

您是否在所有表格中添加了创建和更新的时间戳?我没有,但我计划在每条记录上都添加时间戳。但是,这只需要同步到一侧。本地副本永远不会被写入,它将始终是只读的。用户只会从中读取数据,而它只是该机器设法获取的最新服务器的“副本”。也许我不明白?对我来说,最简单的方法是存储一个上次更新的日期,然后将上面的任何内容复制下来。当我尝试使用更新的数据集写回本地数据库时。它不会将数据存储回数据库,因为它不会拾取更改。因此,由于某些原因,数据适配器不会写回本地数据库。我需要做的是比较本地数据库和服务器数据库,以及服务器数据库上的任何更改。然后,它会将这些更改下载到本地。如果您的代码不起作用,也许您应该发布一些代码?对不起,这可能是我编写的方式。我无意让它们保持同步。我所需要做的就是确保它可以从服务器副本下载所有更改。由于它已经在一个数据集中完成了这项工作,那么将该数据集上传到数据库会比占用更多带宽更容易吗?
    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