DAO (Database.CreateProperty)

适用于:Access 2013、Office 2013

创建一个新的用户定义的 Property 对象(仅适用于 Microsoft Access 工作区)。

语法

表达式 .CreateProperty (Name _, _Type_, _Value_, _DDL**)

表达式 一个表示 Database 对象的变量。

参数

名称

必需/可选

数据类型

说明

Name

可选

Variant

一个对新的 Property 对象进行唯一命名的 String。有关有效 Property 名称的详细信息,请参阅 Name 属性。

Type

可选

Variant

一个定义新的 Property 对象的数据类型的常量。有关有效数据类型的信息,请参阅 Type 属性。

Value

可选

Variant

一个包含初始属性值的 Variant。有关详细信息,请参阅 Value 属性。

DDL

可选

Variant

一个 VariantBoolean 子类型),用于指示 Property 是否为 DDL 对象。 默认值为 False。 如果 DDL 为 True,则用户不能更改或删除此 Property 对象,除非他们具有 dbSecWriteDef 权限。

返回值

属性

备注

只能在某个对象的永久 Properties 集合中创建用户定义的 Property 对象。

如果使用 CreateProperty 时省略了一个或多个可选部分,则可以在将新对象追加到集合之前,使用适当的赋值语句设置或重置相应的属性。追加对象后,可以改动此对象的某些(但不是所有)属性设置。有关详细信息,请参阅 NameTypeValue 属性主题。

如果 name 引用已经是集合成员的对象,则使用 Append 方法时将发生 运行时 错误。

若要从集合中删除用户定义的 Property 对象,请对 Properties 集合使用 Delete 方法。不能删除内置属性。

备注

如果省略 DDL 参数,则它默认为 False (非 DDL) 。 由于没有公开相应的 DDL 属性,必须删除要从 DDL 更改为非 DDL 的 Property 对象,然后重新创建该对象。

示例

以下示例尝试设置用户定义的属性的值。如果该属性不存在,则使用 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