MS Access表未归档属性归属与代码识别技术问询
MS Access 设计视图未归档属性的识别与归属分析
核心属性归属逻辑
这些未归档属性主要分为两类:
- DAO隐藏系统属性:属于表/字段的底层存储属性,但DAO对象模型默认不暴露,需显式访问
- Access UI专属属性:仅用于设计视图的状态保存,属于Access界面层的设置,而非数据引擎层面的属性
代码识别通用方法
捕获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方法后追加到属性集合。访问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导出XML查看底层属性
右键目标表→导出→XML(选择包含属性),打开XML文件查看<Properties>节点,可直观看到所有存储的属性名称和值,无需代码即可确认属性归属。
示例问题针对性解决
Field.Description
属于DAO.Field的隐藏属性,用上述通用函数或直接捕获错误访问:Dim fld As DAO.Field Set fld = CurrentDb.TableDefs("表名").Fields("字段名") Debug.Print GetHiddenProperty(fld, "Description")Table.Description
属于DAO.TableDef的隐藏属性,访问方式:Dim tbl As DAO.TableDef Set tbl = CurrentDb.TableDefs("表名") Debug.Print GetHiddenProperty(tbl, "Description")Table.Filter/OrderBy及~OnLoad属性
属于Access UI层的设计视图状态属性,存储在CurrentData.AllTables的属性集合中,当窗体以该表为RecordSource时,Access会自动将这些设置作为窗体的默认属性。Table.LinkChildFields/LinkMasterFields
属于表的预设子窗体链接属性,用于快速创建子窗体时自动填充链接字段,同样通过CurrentData.AllTables访问,仅作用于设计视图的快捷设置。
内容的提问来源于stack exchange,提问作者ebsf
相关产品推荐
相关产品推荐

