Compartilhar via


Coleção de propriedades (DAO)

Aplica-se ao: Access 2013, Office 2013

Uma coleção Properties contém todos os objetos Property de uma instância específica de um objeto.

Comentários

Todo objeto DAO, com exceção dos objetos Connection e Error contém uma coleção Properties, que tem certos objetos Property internos. Esses objetos Property (que geralmente são denominados apenas propriedades) caracterizam exclusivamente essa instância do objeto.

Além das propriedades internas, você também poderá criar e adicionar suas próprias propriedades definidas pelo usuário. Para adicionar uma propriedade definida pelo usuário a uma instância existente de um objeto, defina primeiramente suas características com o método CreateProperty, em seguida adicione-a à coleção com o método Append. Uma referência a um objeto Property definido pelo usuário que não tenha sido acrescentado ainda a uma coleção Properties causará um erro, bem como o acréscimo de um objeto Property definido pelo usuário a uma coleção Properties que contenha um objeto Property de mesmo nome.

É possível usar o método Delete para remover propriedades definidas pelo usuário da coleção Properties, mas não é possível remover propriedades internas.

Observação

[!OBSERVAçãO] Um objeto Property definido pelo usuário está associado apenas à instância específica de um objeto. A propriedade não é definida para todas as instâncias de objetos do tipo selecionado.

Para fazer referência a um objeto Property interno em uma coleção por seu número ordinal ou por sua configuração de propriedade Name, use uma das seguintes formas de sintaxe:

  • Objeto. Propriedades(0)

  • Objeto. Propriedades("name")

  • Objeto. Propriedades! [nome]

Para uma propriedade interna, é possível usar esta sintaxe:

  • object.name

Observação

Para uma propriedade definida pelo usuário, você deve usar o objeto completo. Sintaxe Properties("name").

Com as mesmas formas de sintaxe, você também pode referir-se à propriedade Value de um objeto Property. O contexto da referência determinará se você está se referindo ao objeto Property propriamente dito ou à propriedade Value do objeto Property.

Exemplo

Este exemplo cria uma propriedade definida pelo usuário para o banco de dados atual, define suas propriedades Type e Value e acrescenta-o à coleção Properties do banco de dados. Em seguida, são enumeradas no exemplo todas as propriedades do banco de dados.

    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 

Este exemplo tenta definir o valor de uma propriedade definida pelo usuário. Se a propriedade não existir, será usado o método CreateProperty para criar e definir o valor da nova propriedade. O procedimento SetProperty é exigido para a execução deste procedimento.

    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