1

我有一个 MS Access 2010 应用程序,它在后端链接到 MS SQL 2008。

当我运行应用程序时,我遇到了运行时错误“2467” - 您输入的表达式引用了一个已关闭或不存在的对象。

当我选择调试时,该行指向:

Forms!FRM_MAIN_HOME!FRM_SUB_EDIT.Form.RecordSource =

我已经在 SSMS 中运行了查询并且工作正常。

我一直在寻找缺少的参考资料,但没有。

当我使用 Shift 运行应用程序来呈现表单时,我得到一个不同的错误:条件表达式中的数据类型不匹配。这次我没有调试选项,但我怀疑这是真正的问题。

还有一件事:当我在不同的数据库上运行这个应用程序时,它加载时没有错误。

任何帮助深表感谢。

谢谢。


Forms!FRM_MAIN_HOME!FRM_SUB_EDIT.Form.RecordSource = _
   "SELECT V.VendorNumber, V.VendorName, T.DocumentNumber, " _
   & "T.DocumentDate, T.AmountInc, T.GSTClaim, T.GSTBatch " _
   & "FROM TBL_VENDOR_MASTER AS V INNER JOIN TBL_GST_01_TRANSACTIONS AS T " _ 
   & "ON V.AAVendorID = T.AAVendorID WHERE T.GSTBatch =" _
   & Me.BATCH_NUM & " ORDER BY V.VendorName" 

当我在 SSMS 中运行此代码时,它工作得很好。此外,当我选择不同的数据库时,它可以正常工作而不会出现任何错误。

4

2 回答 2

0

我准备打赌你在错误的事件中运行这个。您不能使用 Open 事件来引用窗体上的控件。我不确定您为什么要动态设置子表单记录源。

记录源应该是:

SELECT V.VendorNumber, 
       V.VendorName,
       T.DocumentNumber,
       T.DocumentDate, 
       T.AmountInc,
       T.GSTClaim,
       T.GSTBatch 
FROM TBL_VENDOR_MASTER AS V 
INNER JOIN TBL_GST_01_TRANSACTIONS AS T 
ON V.AAVendorID = T.AAVendorID 
ORDER BY V.VendorName

您应该像这样设置链接字段:

Link child field : GSTBatch
Link master field : BATCH_NUM 
于 2012-08-27T11:03:31.107 回答
0

这个问题似乎与一些内存问题有关,因为表很大(而且我的机器不是最快的......),但是在 MS Access 运行时出现的错误消息(每次我点击一个字段,一个选项卡或其他任何东西,我会得到同样的错误,只是没有调试选项),与我拥有的一个表有关,MS Access 不喜欢我在那里的一个字段。

为了解决这个错误,我加载了一个较旧的备份,并开始更新一些列并测试 MS Access,直到我发现问题。另外,我添加了一些索引,并在注册表中将 ODBC 的默认超时更改为 0(无限制)。

这似乎解决了这个问题。

于 2012-09-06T05:18:03.253 回答