Шаг 61 - Свойство Replicable

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

Значение
Задаваемое или возвращаемое значение имеет тип данных Text.
Если этому свойству объекта Database будет присвоено строковое значение "T", база данных станет реплицируемой. Значение "T" этого свойства не может быть изменено; при присвоении этому свойству значения "F" (или любого другого значения, отличного от "T") приведет к возникновению ошибки.
Если этому свойству объекта базы данных будет присвоено строковое значение "T", реплицируемым станет данный объект (и все его последующие изменения) во всех репликах в наборе реплик. Задать значение этого свойства можно также в окне свойств этого объекта в Microsoft Access.
В версии 3.5 ядра базы данных Microsoft Jet поддерживается также свойство ReplicableBool со значениями типа Boolean. Его функциональные характеристики идентичны свойству Replicable, с тем лишь исключением, что значения имеют тип Boolean. Заданное для свойства ReplicableBool значение True делает объект реплицируемым.

Замечания
Перед тем как определять свойство Replicable для базы данных, создайте резервную копию базы данных. Если операция определения свойства Replicable не была успешно завершена, необходимо удалить частично реплицированную базу данных, создать новую резервную копию и повторить попытку.
При задании данного свойства для объекта Database ядро Microsoft Jet добавляет поля, таблицы и свойства в объекты базы данных. Эти поля, таблицы и свойства используются ядром Microsoft Jet для синхронизации объектов базы данных. Например, во все существующие таблицы добавляются три новых поля, позволяющие идентифицировать измененные записи. Добавление этих полей и других объектов приводит к увеличению размера базы данных.
Для форм, отчетов, макросов и модулей, созданных в главном приложении (например, в Microsoft Access), пользователь должен задать это свойство для объекта, определенного в главном приложение с помощью интерфейса пользователя главного приложения. После определения свойства KeepLocal это свойство включается в семейство Properties объекта Document, представляющего главный объект.
Если свойство Replicable было задано для объекта путем установки флажка реплицируемого объекта в окне свойств объекта, определение свойства Replicable в программе становится невозможным.
При создании в реплике нового объекта — таблицы, запроса, формы, отчета, макроса или модуля — он считается локальным и хранится только в этой реплике. Чтобы сделать объект доступным для пользователей, работающих с другими репликами, необходимо сделать его реплицируемым. Для этого следует создать этот объект в основной реплике или импортировать его в нее, а затем присвоить значение "T" свойству Replicable объекта.
Объект, для которого задается свойство Replicable, может уже иметь это свойство, унаследованное от другого объекта. Однако значение этого свойства, заданное для другого объекта, не влияет на текущий объект. Для каждого объекта значение этого свойства должно быть задано явно.

Пример
Следующие примеры иллюстрируют применение свойства Replicable в двух ситуациях: к базе данных и к объекту базы данных.
Следующая программа преобразует базу данных Борей.mdb в реплицируемую. Перед выполнением этой программы рекомендуется создать резервную копию базы данных "Борей". Необходимо также указать в программе путь к базе данных "Борей" на вашем компьютере.

Sub MakeDesignMasterX()

	Dim dbsNorthwind As Database
	Dim prpNew As Property

	' Открывает базу данных для монопольного доступа.
	Set dbsNorthwind = OpenDatabase("Борей.mdb", True)

	With dbsNorthwind

		' Создает свойство Replicable, если оно не существует.
		' Если свойство существует, отключает обработку ошибок.
	On Error Resume Next
		Set prpNew = .CreateProperty("Replicable", dbText, "T")
		.Properties.Append prpNew
		' Задает для свойства Replicable базы данных значение True.
		.Properties("Replicable") = "T"
		.Close
	End With
End Sub
Следующая программа создает новый объект TableDef и делает его реплицируемым. Для выполнения этой процедуры необходимо предварительно реплицировать базу данных.
Sub CreateReplLocalTableX()

	Dim dbsNorthwind As Database
	Dim tdfNew As TableDef
	Dim fldNew As Field
	Dim prpNew As Property

	Set dbsNorthwind = OpenDatabase("Борей.mdb")
	' Создает новый объект TableDef с именем "Налоги".
	Set tdfNew = dbsNorthwind.CreateTableDef("Налоги")
	' Определяет текстовое поле "Ставка".
	Set fldNew = tdfNew.CreateField("Ставка", dbText, 3)
	' Добавляет новое поле в объект TableDef.
	tdfNew.Fields.Append fldNew
	' Добавляет новый объект TableDef в базу данных.
	dbsNorthwind.TableDefs.Append tdfNew
	' Создает новое свойство Replicable _
	' для нового объекта TableDef.
	Set prpNew = tdfNew.CreateProperty("Replicable", dbText, "T")
	' Добавляет свойство Replicable в новый
	' объект TableDef.
	tdfNew.Properties.Append prpNew
	dbsNorthwind.Close
End Sub 

Следующая программа задает для свойства Replicable указанного объекта TableDef значение "T". Если свойство не существует, оно создается и добавляется в семейство Properties таблицы, а затем получает значение "T".

Sub SetReplicable(tdfTemp As TableDef)

	On Error GoTo ErrHandler
	tdfTemp.Properties("Replicable") = "T"
	On Error GoTo 0
	Exit Sub

ErrHandler:

	Dim prpNew As Property
	If Err.Number = 3270 Then
		Set prpNew = tdfTemp.CreateProperty("Replicable", dbText, "T")
		tdfTemp.Properties.Append prpNew
	Else
		MsgBox "Ошибка " & Err & ": " & Error
	End If

End Sub

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