Excel 表字段所需的属性读取不正确
从访问表中读取字段的属性“Required”时遇到问题。 在Access表中,属性“Required”设置为TRUE 我正在通过如下所示的记录集读取属性Excel 表字段所需的属性读取不正确,excel,vba,ms-access,recordset,Excel,Vba,Ms Access,Recordset,从访问表中读取字段的属性“Required”时遇到问题。 在Access表中,属性“Required”设置为TRUE 我正在通过如下所示的记录集读取属性 Set MyRecordset=AppDatabaseDB.OpenRecordset(“从我的表格中选择*”,dbOpenDynaset) 对于MyIndex=0到MyRecordset.Fields.Count-1 Debug.Print“Name:”&MyRecordset(MyIndex).Name Debug.Print“Requir
Set MyRecordset=AppDatabaseDB.OpenRecordset(“从我的表格中选择*”,dbOpenDynaset)
对于MyIndex=0到MyRecordset.Fields.Count-1
Debug.Print“Name:”&MyRecordset(MyIndex).Name
Debug.Print“Required:”&MyRecordset(MyIndex)。Required
下一个
当字段名长度最多为41个字符时,上述命令工作正常。
例如:
Field name=scr11\u modelo\u do\u produto\u descripcao\u do\u prod
但是,当字段名超过41个字符时,上述代码(MyRecordset(MyIndex).Required
)始终返回FALSE
例如:
Field name=scr11\u modelo\u do\u produto\u descripcao\u do\u产品
阅读Access表的规范时,我发现字段名中的字符数最多可达64个字符
我请求帮助了解问题所在。可能会发生什么情况导致属性无法返回正确的值?为什么名称的长度会影响结果?如果要分析表的结构,请不要使用记录集!改用TableDef。记录集只加载与其相关的内容,而tabledef加载整个结构
Set td = AppDatabaseDB.TableDefs("my_table")
For MyIndex = 0 To td.Fields.Count - 1
Debug.Print "Name: " & MyRecordset(MyIndex).Name
Debug.Print "Required: " & MyRecordset(MyIndex).Required
Next
另请注意:当通过TableDef访问时,
.Required
为读写。通过记录集访问时,.Required
是只读的。嗨,Erik a,谢谢你的帮助。我甚至用TableDefs而不是Recordset做了一个测试。然而,对于我在程序中定义的逻辑,使用记录集会简单得多。我想了解到底发生了什么。这是正常现象,还是我在使用记录集进行此操作时犯了错误?@Marcos使用记录集分析字段属性是一种风险,因为根据各种条件,它们可能会初始化,也可能不会初始化。或者,您可以使用字段的Properties
集合显式获取属性,但这会添加一些代码。另一种选择是使用ADOX,但如果您使用的是DAO,则不推荐使用。Erik,感谢您的评论,使用TableDef而不是记录集似乎是最好的选择。非常感谢你的帮助