在版本 2206 上进行重大更改的访问(Recordset2.Fields 返回 DAO.Field3 而不是 DAO.Field2)- 错误 13

pap*_*ear 7 ms-access vba ms-office

看来 Microsoft 在 2206 版本中引入了重大更改!:-(

如果你有类似的代码

Dim rs as DAO.Recordset2
Dim fld as DAO.Field2

For Each fld in rs.Fields   '<- Code will break here, because Fields suddenly return Field3
   ... 
Next
Run Code Online (Sandbox Code Playgroud)

这是一场噩梦!我可以确认恢复到版本 2205 可以解决该问题。

我的问题:

  • 有人知道如何解决这个问题吗?(除了更改所有代码)
  • 有人可以联系 MS 来解决这个问题吗?

谢谢你的帮助!

V 2205 的对象浏览器V 2206 的对象浏览器

Gus*_*tav 2

来自微软:

\n
\n

目前最简单的解决方法是将类型声明更改DAO.Field2DAO.Field.

\n
\n
\n

添加了 Field2 以支持多值字段的属性,添加了 Field3 以支持小数类型的 Precision 和 Scale 属性。(您\xe2\x80\x99会注意到,出于类似的原因,浏览器中还有一个Recordset2对象)。

\n

如果您声明为 \xe2\x80\x98Field\xe2\x80\x99,则您不会\xe2\x80\x99 获得扩展属性的智能感知,但您仍然可以访问代码中的所有属性。

\n
\n
\n

当我们更新接口时,我们不能\xe2\x80\x99更新现有接口,但必须扩展现有接口。\n我们正在研究是否可以改善人们显式声明变量的情况下的向后兼容性问题是 Field2 类型,而不仅仅是 Field。

\n
\n