Поделиться через


Метод Database.PopulatePartial (DAO)

Область применения: Access 2013, Office 2013

Синхронизирует все изменения в частичной реплика с полным реплика, очищает все записи в частичном реплика, а затем повторно выполняет частичное реплика на основе текущих фильтров реплика. (Только базы данных ядра СУБД Microsoft Access.)

Синтаксис

expression . ЗаполнениеPartial(DbPathName)

выражение: переменная, представляющая объект Database.

Параметры

Имя

Обязательный/необязательный

Тип данных

Описание

DbPathName

Обязательный

String

Путь и имя полной реплика, из которой заполняется запись.

Замечания

При синхронизации частичного реплика с полным реплика можно создать "потерянные" записи в частичной реплика. Например, предположим, что у вас есть таблица Customers с параметром ReplicaFilter , для которых задано значение "Регион = "ЦС". Если пользователь изменяет регион клиента с ЦС на NY в частичном реплика, а затем выполняется синхронизация с помощью метода Synchronize, изменение распространяется на полную реплика но запись, содержащая NY в частичном реплика, теряется, так как теперь она не соответствует критериям фильтра реплика.

Чтобы решить проблему потерянных записей, можно использовать метод PopulatePartial . Метод PopulatePartial аналогичен методу Synchronize, но он синхронизирует все изменения с полным реплика, удаляет все записи в частичном реплика, а затем выполняет повторную реплика на основе текущих фильтров реплика. Даже если фильтры реплика не изменились, ЗаполнениеPartial всегда будет очищать все записи в частичном реплика и повторно заполнять их на основе текущих фильтров.

Как правило, при создании частичного реплика и при изменении фильтров реплика следует использовать метод PopulatePartial. Если приложение изменяет фильтры реплика, выполните следующие действия.

  1. Синхронизируйте полный реплика с частичным реплика, в котором изменяются фильтры.

  2. Используйте свойства ReplicaFilter и PartialReplica, чтобы внести необходимые изменения в фильтр реплика.

  3. Вызовите метод PopulatePartial, чтобы удалить все записи из частичного реплика и перенести все записи из полного реплика, которые соответствуют новым условиям фильтра реплика.

Если фильтр реплика изменился и метод Synchronize вызывается без предварительного вызова PopulatePartial, возникает перехватываемая ошибка.

Метод PopulatePartial можно вызвать только в частичной реплика, открытой для монопольного доступа. Кроме того, нельзя вызвать метод PopulatePartial из кода, выполняемого в частичном реплика. Вместо этого откройте частичную реплика исключительно из полной реплика или другой базы данных, а затем вызовите команду PopulatePartial.

Примечание.

Хотя перед очисткой и повтором частичного реплика выполняется односторонняя синхронизация, по-прежнему рекомендуется вызвать функцию Synchronize перед вызовом PopulatePartial. Это связано с тем, что если вызов синхронизации завершается сбоем, возникает перехватываемая ошибка. Эту ошибку можно использовать, чтобы решить, следует ли продолжать работу с методом 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