Коллекция свойств (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