Шаг 167 - Свойство ReplicaFilter

Описание
Задает или возвращает значение для объекта TableDef в частичной реплике, показывающее, какое подмножество записей этой таблицы отбирается при репликации из полной реплики (только в базах данных Microsoft Jet).

Значение
Задаваемое или возвращаемое значение принадлежит к типу String или Boolean; оно указывает, какое подмножество записей этой таблицы отбирается при репликации, как показано ниже:

Строка		Условие, которому должны удовлетворять записи таблицы, отбираемые при 
		репликации из полной реплики.
True		Реплицируются все записи.
False		(По умолчанию).  Ни одна из записей не реплицируется.

Замечания
Данное свойство аналогично предложению WHERE инструкции SQL (без ключевого слова WHERE), но в нем не допускается использование подчиненных запросов, статистических функций (таких как Count) или определяемых пользователем функций при указании условий отбора.
Синхронизация частичной реплики возможна только с полной репликой. Не допускается синхронизация данных в двух частичных репликах. Кроме того, при создании частичной реплики имеется возможность указать условия отбора записей, но нельзя указать поля, участвующие в репликации.
Обычно сброс фильтра реплики осуществляется в том случае, когда требуется поместить в частичную реплику новый набор записей. Например, если сотрудник временно принимает регион, обслуживаемый другим сотрудником, приложение базы данных может выполнить временную репликацию данных из двух регионов, а затем восстановить предыдущий фильтр. В таком сценарии приложение изменяет значение свойства ReplicaFilter, а затем снова заполняет частичную реплику.
При изменении фильтра реплики в приложении необходимо выполнить следующие действия:
1. Вызовите метод Synchronize для синхронизации полной реплики с частичной репликой, у которой изменяется фильтр.
2. С помощью свойства ReplicaFilter внесите требуемые изменения в фильтр реплики.
3. Вызовите метод PopulatePartial для удаления всех записей из частичной реплики и передачи в нее всех записей из полной реплики, удовлетворяющих условию нового фильтра.
Для удаления фильтра следует задать для свойства ReplicaFilter значение False. Если удалить все фильтры и вызвать метод PopulatePartial, в реплицированные таблицы в частичной реплике не будет помещена ни одна запись.
Если после изменения фильтра реплики метод Synchronize вызывается без предварительного вызова метода PopulatePartial, возникает перехватываемая ошибка.

Пример
Следующая программа использует свойство ReplicaFilter для репликации записей для клиентов из Твери.

Sub ReplicaFilterX()

	' Предполагается, что текущая открытая база данных
	' является репликой.
	Dim tdfCustomers As TableDef
	Dim strFilter As String
	Dim dbsTemp As Database
	Set dbsTemp = OpenDatabase("Борей.mdb")
	Set tdfCustomers = dbsTemp.TableDefs("Клиенты")
	' Выполняет синхронизацию с полной репликой
	' перед установлением фильтра.
	dbsTemp.Synchronize "C:\SALES\FY96.MDB" 
	strFilter = "Город = 'Тверь'"
	tdfCustomers.ReplicaFilter = strFilter
	dbsTemp.PopulatePartial "C:\SALES\FY96.MDB"
	' Удаляет фильтр реплики, созданный только 
	' для демонстрации.
	tdfCustomers.ReplicaFilter = False
	' Снова заполняет базу данных
	dbsTemp.PopulatePartial "C:\SALES\DATA96.MDB"
End Sub

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 09.04.2002