Шаг 212 - Свойство PartialReplica

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

Значение
Задаваемое или возвращаемое значение принадлежит к типу Boolean и имеет значение True, когда при синхронизации задается учет связи.

Замечания
Данное свойство позволяет выполнять репликацию данных из полной реплики в частичную реплику с учетом связей, установленных между таблицами. Свойство PartialReplica используют в тех случаях, когда одного свойства ReplicaFilter недостаточно для однозначного указания данных, помещаемых в частичную реплику. Например, предположим, что имеется база данных, в которой для таблицы "Клиенты" установлена связь с отношением "один-ко-многим" с таблицей "Заказы", и требуется задать такую настройку частичной реплики, чтобы в нее помещались только заказы клиентов из города Тверь (а не все заказы). Невозможно задать в свойстве ReplicaFilter таблицы "Заказы" условие Город = 'Тверь', поскольку поле "Город" находится в таблице "Клиенты", а не в таблице "Заказы".
Для репликации всех заказов из города Тверь, необходимо указать, что связь между таблицами "Заказы" и "Клиенты" является активной при репликации. После создания частичной реплики для ее заполнения заказами из Твери требуются следующие действия:

  1. Задайте в свойстве ReplicaFilter объекта TableDef "Клиенты" условие "Город = 'Тверь'".
  2. Задайте значение True свойства PartialReplica объекта Relation, соответствующего связи между таблицами "Заказы" и "Клиенты".
  3. Вызовите метод PopulatePartial.

При определении фильтра или связи для реплики необходимо помнить, что записи частичной реплики, не удовлетворяющие условию отбора, будут удалены из частичной реплики, но не из полной реплики. Например, предположим, что в свойстве ReplicaFilter объекта TableDef "Клиенты" для частичной реплики задано условие "Город = 'Тверь'", и требуется снова заполнить базу данных. Это приведет к вставке или обновлению всех записей для клиентов из Твери. Если после этого изменить условие фильтра ReplicaFilter на "Город = 'Тула'" и снова заполнить базу данных, все записи для клиентов из Твери в частичной реплике будут удалены, а все записи для клиентов из Тулы вставлены из полной реплики. В полной реплике не будет удалена ни одна из записей.
Полезным приемом перед заданием значения свойства ReplicaFilter или PartialReplica является синхронизация частичной реплики, для которой задаются эти свойства, с полной репликой. Это обеспечит передачу изменений из частичной реплики в полную реплику перед удалением любых записей из частичной реплики.

Пример
Следующая программа использует свойство PartialReplica для репликации всех записей, соответствующих клиентам из одного региона:

PartialReplicaX()

	' Предположения: dbsTemp является частичной репликой,
	' а между таблицами установлена соответствующая связь.

	Dim tdfOrders As TableDef
	Dim relCustOrd As Relation
	Dim dbsTemp As Database
	Dim relLoop As Relation

	Set dbsTemp = OpenDatabase("Борей.mdb")
	Set tdfOrders = dbsTemp.TableDefs("Заказы")

	' Ищет объект Relation представляющий связь
	' между таблицами "Клиенты" и "Заказы".
	For Each relLoop In dbsTemp.Relations
	If relLoop.Table = "Клиенты") And relLoop.ForeignTable = "Заказы") Then 
		' Задает для свойства PartialReplica объекта Relation
		' значение True.
			relLoop.PartialReplica = True
			Exit For
		End If
	Next relLoop

End Sub

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