You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Access表未归档属性归属与代码识别技术问询

MS Access 设计视图未归档属性的识别与归属分析

核心属性归属逻辑

这些未归档属性主要分为两类:

  • DAO隐藏系统属性:属于表/字段的底层存储属性,但DAO对象模型默认不暴露,需显式访问
  • Access UI专属属性:仅用于设计视图的状态保存,属于Access界面层的设置,而非数据引擎层面的属性

代码识别通用方法

  1. 捕获DAO隐藏属性
    直接遍历DAO.TableDef或DAO.Field的Properties集合看不到隐藏属性,需通过错误捕获来访问:

    ' 通用获取隐藏属性的函数
    Function GetHiddenProperty(obj As Object, propName As String) As Variant
        On Error Resume Next
        GetHiddenProperty = obj.Properties(propName).Value
        If Err.Number <> 0 Then GetHiddenProperty = Null
        On Error GoTo 0
    End Function
    

    若需要创建属性,可使用CreateProperty方法后追加到属性集合。

  2. 访问UI层属性
    Access的Application.CurrentData对象包含所有表、查询的UI相关属性,可直接遍历:

    Dim tbl As AccessObject
    Set tbl = Application.CurrentData.AllTables("目标表名")
    ' 遍历所有属性(包括未归档的)
    Dim prop As Variant
    For Each prop In tbl.Properties
        Debug.Print prop.Name & ": " & prop.Value
    Next
    
  3. 导出XML查看底层属性
    右键目标表→导出→XML(选择包含属性),打开XML文件查看<Properties>节点,可直观看到所有存储的属性名称和值,无需代码即可确认属性归属。

示例问题针对性解决

  1. Field.Description
    属于DAO.Field的隐藏属性,用上述通用函数或直接捕获错误访问:

    Dim fld As DAO.Field
    Set fld = CurrentDb.TableDefs("表名").Fields("字段名")
    Debug.Print GetHiddenProperty(fld, "Description")
    
  2. Table.Description
    属于DAO.TableDef的隐藏属性,访问方式:

    Dim tbl As DAO.TableDef
    Set tbl = CurrentDb.TableDefs("表名")
    Debug.Print GetHiddenProperty(tbl, "Description")
    
  3. Table.Filter/OrderBy及~OnLoad属性
    属于Access UI层的设计视图状态属性,存储在CurrentData.AllTables的属性集合中,当窗体以该表为RecordSource时,Access会自动将这些设置作为窗体的默认属性。

  4. Table.LinkChildFields/LinkMasterFields
    属于表的预设子窗体链接属性,用于快速创建子窗体时自动填充链接字段,同样通过CurrentData.AllTables访问,仅作用于设计视图的快捷设置。

内容的提问来源于stack exchange,提问作者ebsf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 16:37:33