次の方法で共有


Database.PopulatePartial メソッド (DAO)

適用先: Access 2013、Office 2013

部分レプリカの変更を完全レプリカと同期し、部分レプリカ内のすべてのレコードをクリアしてから、現在のレプリカ フィルターに基づいて部分レプリカを再入力します。 (Microsoft Access データベース エンジン データベースのみ)。)。

構文

。PopulatePartial(DbPathName)

Database オブジェクトを表す変数です。

パラメーター

名前

必須かどうか

データ型

説明

DbPathName

必須

String

レコードの設定元となるフル レプリカのパスおよび名前。

注釈

部分レプリカとフル レプリカを同期させると、部分レプリカ内に "孤立化した" レコードが作成されることがあります。 たとえば、 ReplicaFilter が "Region = 'CA' に設定されている Customers テーブルがあるとします。 ユーザーが部分レプリカで得意先の地域を CA から NY に変更し、その後、 Synchronize メソッドを使用して同期が行われた場合、この変更がフル レプリカに反映されますが、部分レプリカ内で NY を持つレコードはレプリカのフィルター抽出条件に一致しなくなるため、孤立化します。

孤立化したレコードの問題を解決するには、 PopulatePartial メソッドを使用します。 PopulatePartial メソッドは Synchronize メソッドと似ていますが、すべての変更をフル レプリカと同期させ、部分レプリカ内のすべてのレコードを削除し、現在のレプリカ フィルターに基づいて部分レプリカを再設定します。 レプリカ フィルターが変更されていない場合でも、 PopulatePartial は必ず部分レプリカ内のすべてのレコードを消去し、現在のフィルターに基づいて部分レプリカを再設定します。

一般に、部分レプリカの作成時、およびレプリカ フィルターを変更したときは PopulatePartial メソッドを使用してください。 アプリケーションでレプリカ フィルターを変更する場合は、次の手順を実行します。

  1. フル レプリカと、フィルターが変更される部分レプリカを同期させます。

  2. ReplicaFilter プロパティおよび PartialReplica プロパティを使用して、レプリカ フィルターに必要な変更を行います。

  3. PopulatePartial メソッドを呼び出して、部分レプリカのすべてのレコードを削除し、新しいレプリカのフィルター抽出条件に一致するすべてのレコードをフル レプリカから送信します。

レプリカ フィルターが変更された場合、最初に PopulatePartial を呼び出さずに Synchronize メソッドが呼び出されると、トラップ可能なエラーが発生します。

PopulatePartial メソッドは、排他的に開かれている部分レプリカでのみ呼び出すことができます。 また、部分レプリカ内で実行しているコードから PopulatePartial メソッドを呼び出すことはできません。 代わりに、フル レプリカまたは別のデータベースから部分レプリカを排他モードで開き、 PopulatePartial を呼び出してください。

注:

[!メモ] PopulatePartial は部分レプリカを消去して再設定する前に単方向の同期を行いますが、 PopulatePartial を呼び出す前に Synchronize を呼び出すことをお勧めします。 Synchronize の呼び出しが失敗した場合は、トラップ可能なエラーが発生するためです。 このエラーを使用して、(部分レプリカのすべてのレコードを削除する) PopulatePartial メソッドを実行するかどうかを判断できます。 PopulatePartial が単独で呼び出された場合、レコードの同期中にエラーが発生したとしても、部分レプリカ内のレコードが削除されますが、これは目的の結果ではないことがあります。

次の使用例では、レプリカ フィルターを変更した後で PopulatePartial メソッドを使用します。

Sub PopulatePartialX() 
 
 Dim tdfCustomers As TableDef 
 Dim strFilter As String 
 Dim dbsTemp As Database 
 
 ' Open the partial replica in exclusive mode. 
 Set dbsTemp = OpenDatabase("F:\SALES\FY96CA.MDB", True) 
 
 With dbsTemp 
 Set tdfCustomers = .TableDefs("Customers") 
 
 ' Synchronize with full replica 
 ' before setting replica filter. 
 .Synchronize "C:\SALES\FY96.MDB" 
 
 strFilter = "Region = 'CA'" 
 tdfCustomers.ReplicaFilter = strFilter 
 
 ' Populate records from the full replica. 
 .PopulatePartial "C:\SALES\FY96.MDB" 
 
 .Close 
 End With 
 
End Sub