我正在嘗試編寫一個程序VB.net這是一個'花哨'的數據庫前端。 該程序要做的是將數據庫從「服務器」數據庫所在的共享位置本地存儲在用戶計算機上。合併Access數據庫
本地和服務器副本都存儲到數據集中,然後程序檢查服務器副本以查看它最近是否有任何更新。如果有,它只會下載更新以減少帶寬。
我想要做的是強制本地數據庫承擔服務器數據庫更改。但是,使用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
您是否添加了創建和更新所有表格的時間戳? – Fionnuala 2012-08-09 11:31:40
我還沒有,但是我打算在每條記錄上做這個。但是,這隻需要同步到一邊。本地副本永遠不會被寫入,它將始終是隻讀的。用戶只會從中讀取數據,它只是該機器設法抓取的最新服務器的「副本」。 – 2012-08-09 11:43:27
也許我不明白?對我來說,最簡單的事情就是存儲上次更新的日期,然後複製下面的任何內容。 – Fionnuala 2012-08-09 11:46:23