Метод 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. Если приложение изменяет фильтры реплика, выполните следующие действия.
Синхронизируйте полный реплика с частичным реплика, в котором изменяются фильтры.
Используйте свойства ReplicaFilter и PartialReplica, чтобы внести необходимые изменения в фильтр реплика.
Вызовите метод 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