我在运行access vba模块时遇到了C ++运行时错误。始终如一的可重复性

时间:2014-05-22 05:37:22

标签: access-vba runtime-error

我从网上获取了2个样本数据库 - 一个用于日历,一个用于拖放功能 - 并将一些代码拉到一起,以获得几乎完全正常运行的结果。

有一个构建/刷新日历的功能,它可以很好地工作。 拖放功能完美运行。 (该项目在表格中更新以反映新日期。)

当我拖放时,日历不会自动刷新。如果我在下个月点击上个月(使用新日期调用刷新功能),则更改将按预期反映。

问题是当我尝试在拖放事件后自动调用刷新功能时。每次我在拖放后调用代码中的刷新时访问都会崩溃,无论我在何处拨打电话。

错误说:

  

Microsoft Visual C ++运行时库

     

运行时错误!

     

节目:C:......

     

此应用程序已请求运行时将其终止   不寻常的方式请联系应用程序的支持团队获取更多信息   信息。

我试过了:

  • 我认为它可能会尝试刷新太快,所以我添加了暂停 功能并让程序在下降之前等待10秒 令人耳目一新。仍然坠毁。

  • 我在数据库上做了一个小型修复工作。

  • 我在accdb文件的命令行中运行/反编译。

  • 我将相关表单,表格,查询和模块导出到新的accdb 文件

  • 我试图重新注册在引用下检查的库。 (RegSvr32"库文件的路径")唯一成功的是 vbe7.dll。 " MS访问14.0对象库"," OLE自动化",和 " MS Office 14.0访问数据库引擎对象"不包含 DllRegisterServer方法,因此regsvr32没有成功。没有别的 参考检查。仍然崩溃。

  • 我已经尝试了无数个地方来插入对refreshcalendar()的调用

  • 我已经完成了代码并验证了确切的位置 崩溃发生了。它在代码中被注释。

这是link to the database

重现问题:

打开frmsubCalendar。 2014年5月有2个条目可以在日历上删除到其他日期。然后,我可以单击表单上的上一个/下个月按钮,当May重新加载时,已进行更改。但是如果我进入sub dropdetect()下的mod_drag_drop并取消注释注释中注明的行,则刷新将在dropdetect()子末尾崩溃访问。

我无法弄清楚如何在没有访问权限的拖放事件后自动刷新日历。

1 个答案:

答案 0 :(得分:1)

我意识到这有点过时了,但是我有一个类似的问题,并没有看到这个被回答,我想我会为后代添加这个答案。 :)我发现它是由表单名称引用函数引起的。我在一个模块中进行了以下调用:

lContractCt = Form_Census.lContractCt_f(bIsMembers)

如果lContract是Long,则有一个名为Census的表单和一个名为lContractCt_f的公共函数。

我将函数移动到了一个模块(因此不再需要Form_Census引用)。并将呼叫改为:

lContractCt = lContractCt_f(bIsMembers)

这解决了错误。所以,我会检查你是否有从模块到表单的任何公共函数引用,并将这些公共函数移动到一个模块中。我还通过Forms![Census]看到了一个带有不同表单参考的类似帖子。