Шаг 66 - Метод CreateProperty
Описание
Создает новый определяемый пользователем объект Property (только в рабочей области ядра Microsoft Jet).
Set свойство = объект.CreateProperty (имя, тип, значение, кодDDL)
Параметры
свойство
Объектная переменная, представляющая создаваемый объект Property.
объект
Объектная переменная, представляющая объект Database, Field, Index, QueryDef, Document или TableDef, который используется при создании нового объекта Property.
имя
Необязательный. Выражение или переменная типа Variant (подтип String), содержащая уникальное имя нового объекта Property. Сведения о допустимых именах свойств приведены в разделе о свойстве Name.
тип
Необязательный. Константа, определяющая тип данных нового объекта Property. Сведения о допустимых константах определения типа данных приведены в разделе о свойстве Type.
значение
Необязательный. Выражение или переменная типа Variant, содержащая начальное значение свойства. Дополнительные сведения приведены в разделе о свойстве Value.
кодDDL
Необязательный. Выражение или переменная типа Variant (подтип Boolean), указывающая, является или нет объект Property объектом языка описания данных (DDL). По умолчанию задается значение False. Если кодDDL имеет значение True, данный объект Property может быть изменен или удален только пользователем, имеющим разрешение dbSecWriteDef.
Замечания
Определяемый пользователем объект Property может быть создан только в постоянном семействе Properties (то есть уже сохраненном на диске).
Если один или несколько необязательных элементов синтаксиса опущены при вызове метода CreateProperty, допускается использование соответствующих инструкций присваивания для задания или изменения значения соответствующего свойства перед добавлением нового объекта в семейство. После добавления нового объекта в семейство можно будет изменить значения некоторых (но не всех) его свойств. Дополнительные сведения приведены в разделах, посвященных свойствам Name, Type и Value.
Если аргумент имя указывает на объект, который уже добавлен в семейство, то при вызове метода Append возникает ошибка выполнения.
Для удаления определяемого пользователем объекта Property следует применить метод Delete к семейству Properties. Встроенные свойства удалить нельзя.
Если опустить аргумент кодDDL, он по умолчанию получает значение False (объект не является объектом DDL). Поскольку свойства, определяющего объект языка описания данных, не существует, то для превращения объекта DDL в объект, не являющийся объектом DDL, необходимо для преобразования объекта удалить и снова создать объект Property.
Пример
В следующей программе делается попытка задать значение определяемого пользователем свойства. Если свойство не существует, вызывается метод CreateProperty для создания нового свойства и задания его значения. Для выполнения этой процедуры требуется процедура SetProperty.
Sub CreatePropertyX()
Dim dbsNorthwind As Database
Dim prpLoop As Property
Set dbsNorthwind = OpenDatabase("Борей.mdb")
' Задает для свойства "Архивный " значение True.
SetProperty dbsNorthwind, "Архивный", True
With dbsNorthwind
Debug.Print "Свойства " & .Name
' Отображает семейство Properties базы данных "Борей".
For Each prpLoop In .Properties
If prpLoop <> "" Then Debug.Print " " & prpLoop.Name & " = " & prpLoop
Next prpLoop
' Удаляет новое свойство, созданное только
' для демонстрации.
.Properties.Delete "Архивный"
.Close
End With
End Sub
Sub SetProperty(dbsTemp As Database, strName As String, booTemp As Boolean)
Dim prpNew As Property
Dim errLoop As Error
' Делает попытку задать значение указанного свойства.
On Error GoTo Err_Property
dbsTemp.Properties("strName") = booTemp
On Error GoTo 0
Exit Sub
Err_Property:
' Ошибка 3270 означает, что свойство не найдено.
If DBEngine.Errors(0).Number = 3270 Then
' Создает свойство, задает его значение и добавляет
' свойство в семейство Properties.
Set prpNew = dbsTemp.CreateProperty(strName, dbBoolean, booTemp)
dbsTemp.Properties.Append prpNew
Resume Next
Else
' При возникновении другой ошибки выводит сообщение.
For Each errLoop In DBEngine.Errors
MsgBox "Код ошибки: " & errLoop.Number & vbCr & errLoop.Description
Next errLoop
End
End If
End Sub
Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.