Compartir a través de


Colección Properties (DAO)

Se aplica a: Access 2013, Office 2013

Una colección Properties contiene todos los objetos Property de una instancia específica de un objeto.

Comentarios

Todos los objetos DAO, salvo los objetos Connection y Error, contienen una colección Properties, que tiene varios objetos Property integrados. Estos objetos Property (que a menudo se denominan propiedades) caracterizan de manera única esa instancia del objeto.

Además de las propiedades integradas, también puede crear y agregar sus propias propiedades definidas por el usuario. Para agregar una propiedad definida por el usuario a una instancia existente de un objeto, primero debe definir sus características con el método CreateProperty y después agregarla a la colección con el método Append. Si se hace referencia a un objeto Property definido por el usuario que aún no ha sido anexado a una colección Properties, se producirá un error, y lo mismo ocurre al anexar un objeto Property definido por el usuario a una colección Properties que contiene un objeto Property del mismo nombre.

Puede utilizar el método Delete para quitar propiedades definidas por el usuario de la colección Properties, pero no puede quitar propiedades integradas.

Nota:

[!NOTA] Un objeto Property definido por el usuario está asociado sólo con la instancia específica de un objeto. La propiedad no está definida para todas las instancias de objetos del tipo seleccionado.

Para hacer referencia a un objeto Property integrado en una colección mediante su número ordinal o mediante el valor de la propiedad Name, utilice una de las formas sintácticas siguientes:

  • Objeto. Propiedades(0)

  • Objeto. Properties("name")

  • Objeto. ¡Propiedades! [nombre]

Para una propiedad integrada, también se puede usar la siguiente sintaxis:

  • object.name

Nota:

Para una propiedad definida por el usuario, debe usar el objeto completo. Sintaxis properties("name").

Con los mismos formatos de sintaxis, también se puede hacer referencia a la propiedad Value de un objeto Property. El contexto de la referencia determinará si se está haciendo referencia al objeto Property en sí o a la propiedad Value del objeto Property.

Ejemplo

En este ejemplo se crea una propiedad definida por el usuario para la base de datos actual, se establecen sus propiedades Type y Value y se agrega a la colección Properties de la base de datos. A continuación, se enumeran todas las propiedades de la base de datos.

    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 

En este ejemplo se intenta establecer el valor de una propiedad definida por el usuario. Si la propiedad no existe, se utiliza el método CreateProperty para crear y definir el valor de la nueva propiedad. Se requiere el procedimiento SetProperty para que pueda ejecutarse este procedimiento.

    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