MyTetra Share
Делитесь знаниями!
Шаг 66 - Метод CreateProperty
Время создания: 16.03.2019 23:43
Текстовые метки: vba_access, createproperty
Раздел: Разные закладки - VBA - Access - DAO
Запись: xintrea/mytetra_db_adgaver_new/master/base/1538537422kcrbuq49ao/text.html на raw.githubusercontent.com

Шаг 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

 




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

Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования