0

「ファンシー」なデータベースフロントエンドである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
4

1 に答える 1

2

あなたはこれを見てみたいかもしれません:

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

PS:
あなたが善意のアドバイスを受け入れるなら:あなたはそれを間違っているのです。2つのデータベースを保持しないでください。
2つのデータベースの同期は、非常にデリケートな手順です。
クラスタアプリケーションでさえ、ライブ同期を使用します。
数年の経験がなければ、あっという間に混乱を招きます。
記事の免責事項をお読みください(保証、明示、黙示、または法定)。

于 2012-08-09T11:19:41.260 に答える