Поделиться через


Коллекция свойств (DAO)

Область применения: Access 2013, Office 2013

Коллекция Properties содержит все объекты Property для определенного экземпляра объекта.

Замечания

Каждый объект DAO, кроме объектов Connection и Error , содержит коллекцию Properties , которая содержит определенные встроенные объекты Property . Эти объекты Property (которые часто называются просто свойствами) однозначно характеризуют этот экземпляр объекта.

Помимо встроенных свойств, можно также создавать и добавлять собственные определяемые пользователем свойства. Чтобы добавить определяемое пользователем свойство к существующему экземпляру объекта, сначала определите его характеристики с помощью метода CreateProperty , а затем добавьте его в коллекцию с помощью метода Append . Ссылка на определяемый пользователем объект Property , который еще не был добавлен в коллекцию Properties , приведет к ошибке, а также к добавлению определяемого пользователем объекта Property в коллекцию Properties, содержащую объект Property с тем же именем.

Метод Delete можно использовать для удаления определяемых пользователем свойств из коллекции Properties , но нельзя удалить встроенные свойства.

Примечание.

Определяемый пользователем объект Property связан только с конкретным экземпляром объекта. Свойство определяется не для всех экземпляров объектов выбранного типа.

Чтобы ссылаться на встроенный объект Property в коллекции по порядковому номеру или параметру свойства Name , используйте любую из следующих форм синтаксиса:

  • Объекта. Свойства(0)

  • Объекта. Properties("name")

  • Объекта. Свойства! [имя]

Для встроенного свойства также можно использовать следующий синтаксис:

  • object.name

Примечание.

Для определяемого пользователем свойства необходимо использовать полный объект . Синтаксис Properties("name").

Используя те же формы синтаксиса, можно также ссылаться на свойство Value объекта Property . Контекст ссылки определяет, ссылаетесь ли вы на сам объект Property или на свойство Value объекта Property .

Пример

В этом примере создается определяемое пользователем свойство для текущей базы данных, задаются ее свойства Type и Value и добавляется в коллекцию Properties базы данных. Затем в примере перечисляются все свойства в базе данных.

    Sub PropertyX() 
     
     Dim dbsNorthwind As Database 
     Dim prpNew As Property 
     Dim prpLoop As Property 
     
     Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     
     With dbsNorthwind 
     ' Create and append user-defined property. 
     Set prpNew = .CreateProperty() 
     prpNew.Name = "UserDefined" 
     prpNew.Type = dbText 
     prpNew.Value = "This is a user-defined property." 
     .Properties.Append prpNew 
     
     ' Enumerate all properties of current database. 
     Debug.Print "Properties of " & .Name 
     For Each prpLoop In .Properties 
     With prpLoop 
     Debug.Print " " & .Name 
     Debug.Print " Type: " & .Type 
     Debug.Print " Value: " & .Value 
     Debug.Print " Inherited: " & _ 
     .Inherited 
     End With 
     Next prpLoop 
     
     ' Delete new property because this is a 
     ' demonstration. 
     .Properties.Delete "UserDefined" 
     End With 
     
    End Sub 

В этом примере пытается задать значение определяемого пользователем свойства. Если свойство не существует, оно использует метод CreateProperty для создания и задания значения нового свойства. Для выполнения этой процедуры требуется процедура SetProperty.

    Sub CreatePropertyX() 
     
     Dim dbsNorthwind As Database 
     Dim prpLoop As Property 
     
     Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     
     ' Set the Archive property to True. 
     SetProperty dbsNorthwind, "Archive", True 
     
     With dbsNorthwind 
     Debug.Print "Properties of " & .Name 
     
     ' Enumerate Properties collection of the Northwind 
     ' database. 
     For Each prpLoop In .Properties 
     If prpLoop <> "" Then Debug.Print " " & _ 
     prpLoop.Name & " = " & prpLoop 
     Next prpLoop 
     
     ' Delete the new property since this is a 
     ' demonstration. 
     .Properties.Delete "Archive" 
     
     .Close 
     End With 
     
    End Sub 
     
    Sub SetProperty(dbsTemp As Database, strName As String, _ 
     booTemp As Boolean) 
     
     Dim prpNew As Property 
     Dim errLoop As Error 
     
     ' Attempt to set the specified property. 
     On Error GoTo Err_Property 
     dbsTemp.Properties("strName") = booTemp 
     On Error GoTo 0 
     
     Exit Sub 
     
    Err_Property: 
     
     ' Error 3270 means that the property was not found. 
     If DBEngine.Errors(0).Number = 3270 Then 
     ' Create property, set its value, and append it to the 
     ' Properties collection. 
     Set prpNew = dbsTemp.CreateProperty(strName, _ 
     dbBoolean, booTemp) 
     dbsTemp.Properties.Append prpNew 
     Resume Next 
     Else 
     ' If different error has occurred, display message. 
     For Each errLoop In DBEngine.Errors 
     MsgBox "Error number: " & errLoop.Number & vbCr & _ 
     errLoop.Description 
     Next errLoop 
     End 
     End If 
     
    End Sub