Ms access MS访问属性

Ms access MS访问属性,ms-access,vba,Ms Access,Vba,在哪里可以找到MS Access属性的本机列表,可通过以下方式获得: CurrentDb.Properties("Property_Name_Here") 比如说,, 我知道 AppTitle可用于访问应用程序的标题 AppIcon可用于访问应用程序所用图标的路径 对于不同的版本,我确信有不同的属性。有按版本列出的列表吗?例如,MS Access 2003具有以下属性。。。虽然MS Access 2007具有这些属性。。。等等。我不相信任何地方都有这个列表。因此,Properties属性

在哪里可以找到MS Access属性的本机列表,可通过以下方式获得:

 CurrentDb.Properties("Property_Name_Here")
比如说,, 我知道

  • AppTitle可用于访问应用程序的标题
  • AppIcon可用于访问应用程序所用图标的路径

对于不同的版本,我确信有不同的属性。有按版本列出的列表吗?例如,MS Access 2003具有以下属性。。。虽然MS Access 2007具有这些属性。。。等等。

我不相信任何地方都有这个列表。因此,Properties属性是一个集合。您可以对它们进行迭代,并获得所有相关的。您必须在所有感兴趣的MS Access版本中执行此操作。
为了进一步说明,几乎所有的内部对象,例如表、字段、查询等都有属性。字段属性特别有用,因为您可以为用户指定MS Access链接和显示字段的方式。

很难找到此类信息


我确实找到了访问定义DAO属性的链接

有一个属性集合:

Sub ListProps()
    For i = 0 To CurrentDb.Properties.Count - 1
        Debug.Print CurrentDb.Properties(i).Name
    Next
End Sub
这样行吗?:)

选项比较数据库
选项显式
私有子btnShowDbProps_Click()
在出现错误时转到Err\u btnShowDbProps\u单击
Dim prp作为DAO.Property
dimdbs作为数据库
作为字符串的Dim strProps
设置dbs=CurrentDb
对于dbs.Properties中的每个prp
像弦一样暗的本体
propval=“”
出错时继续下一步
propval=CStr(prp.值)
如果propval=vbNullString,则propval=“”
strProps=strProps&prp.Name&“=”&propval&“(“&PropertyType(prp.Type)&”)”&vbNewLine
调试。打印strProps
下一个
MsgBox strProps
退出\u btnShowDbProps\u单击:
出口接头
错误\u btnShowDbProps\u单击:
MsgBox错误说明
继续退出\u btnShowDbProps\u单击
端接头
函数属性类型(intType为整数)为字符串
选择案例类型
Case-dbBoolean
PropertyType=“dbBoolean”
大小写字节
PropertyType=“dbByte”
Case dbInteger
PropertyType=“dbInteger”
案例dbLong
PropertyType=“dbLong”
Case dbCurrency
PropertyType=“dbCurrency”
单格格
PropertyType=“dbSingle”
案例dbDouble
PropertyType=“dbDouble”
案例日期
PropertyType=“dbDate”
案例dbText
PropertyType=“dbText”
案例dbLongBinary
PropertyType=“dbLongBinary”
案例dbMemo
PropertyType=“dbMemo”
案例dbGUID
PropertyType=“dbGUID”
其他情况
PropertyType=“未知:”&intType
结束选择
端函数

Wow,我几年前就可以使用这个列表了。为什么要使用计数器而不是属性变量,这样就可以使用FOR/EACH循环,这样代码更少,涉及的值查找也更少?是的,Remou:你没有显式地将Sub声明为Public,ListProps的名称也太模糊了。您没有使变量i变暗,所以您只是假设忽略了Option Explicit,这只会鼓励不良做法。与CurrentDb.Properties……和Debug.Print一起使用会更有效。打印不能很好地替代正确的日志记录。你只是没把这件事想清楚,是不是。。。?是的,我的舌头牢牢地插在了脸颊上:)为了补充这些答案,似乎有些属性类型作为DAO.DataTypeEnum返回,而另一些属性类型作为VBA.vbVarType返回,具体取决于父对象类型。例如,这与巴兰伯的答案有关。见:
Option Compare Database
Option Explicit

Private Sub btnShowDbProps_Click()
On Error GoTo Err_btnShowDbProps_Click

  Dim prp As DAO.Property
  Dim dbs As Database
  Dim strProps As String

  Set dbs = CurrentDb

  For Each prp In dbs.Properties
    Dim propval As String
    propval = "<not defined>"

    On Error Resume Next
    propval = CStr(prp.value)

    If propval = vbNullString Then propval = "<empty>"

    strProps = strProps & prp.Name & "=" & propval & " (" & PropertyType(prp.Type) & ")" & vbNewLine
    Debug.Print strProps
  Next

  MsgBox strProps

Exit_btnShowDbProps_Click:
    Exit Sub

Err_btnShowDbProps_Click:
    MsgBox Err.Description
    Resume Exit_btnShowDbProps_Click

End Sub

Function PropertyType(intType As Integer) As String

   Select Case intType
      Case dbBoolean
         PropertyType = "dbBoolean"
      Case dbByte
         PropertyType = "dbByte"
      Case dbInteger
         PropertyType = "dbInteger"
      Case dbLong
         PropertyType = "dbLong"
      Case dbCurrency
         PropertyType = "dbCurrency"
      Case dbSingle
         PropertyType = "dbSingle"
      Case dbDouble
         PropertyType = "dbDouble"
      Case dbDate
         PropertyType = "dbDate"
      Case dbText
         PropertyType = "dbText"
      Case dbLongBinary
         PropertyType = "dbLongBinary"
      Case dbMemo
         PropertyType = "dbMemo"
      Case dbGUID
         PropertyType = "dbGUID"
      Case Else
         PropertyType = "Unknown:" & intType
   End Select

End Function