【问题标题】:Access 2010 application, SQL Server 2008R2 back-end, throwing error "Could not find field"Access 2010 应用程序,SQL Server 2008R2 后端,抛出错误“找不到字段”
【发布时间】:2013-12-13 18:05:16
【问题描述】:

Access 表单(我们可以说称为 FFF)通过无 DSN 连接链接到 SQL Server 表。 一切正常。 表单上有一个字段称为(为了论证)XXX。 绑定控件(即 SS 数据名称)也称为 XXX。 通常,它会正确显示数据并允许更新。

偶尔在表单后面的VBA代码中引用XXX的时候,比如 “如果 XXX > 某个值那么……” 出现访问错误,编号为 -2147352567,描述为“找不到字段”。

它没有命名找不到的字段,但错误行是上面提到的那一行,它只引用了字段XXX。

我已尝试使用 Me.XXX 或 Forms!FFF!XXX 扩展字段引用,但问题仍然存在。

客户端 PC 正在运行 MS Access 2010 运行时。 不涉及 Access (Jet) 表。

谁能建议如何解决这个错误?

【问题讨论】:

    标签: sql-server vba ms-access ms-access-2010


    【解决方案1】:

    当窗体上的控件与其绑定的记录源字段(列)同名时,Access 有时会感到困惑。这有时会导致类似于您所描述的奇怪行为。

    例如,当我们将字段LastName 拖放到表单上时,我们会得到一个.Name 为“LastName”的文本框。在这种情况下,引用 Me.LastName 的 VBA 代码实际上是不明确的:我们是指行源中的 field [LastName],还是指的是 control同名的表格?在很多情况下这无关紧要,但有时确实如此。

    解决方法是重命名控件。一个常见的约定是根据控件的类型为控件名称添加前缀:txtLastName 用于文本框,cbxCategory 用于组合框等。这消除了歧义,因为Me.LastName 是 字段,Me.txtLastName控件

    【讨论】:

    • Ambuguous 让我停顿了一下,但后来我得出结论,您的意思是歧义会导致错误。太棒了!
    • 谢谢你,戈德 - 我只是注意到你已经回答了。让我感到困惑的是,这只是偶尔发生 - 通常不会引发错误。为什么 Access 在大多数情况下都能做到正确。但有时不是?
    猜你喜欢
    • 2012-07-30
    • 2013-01-16
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多