0

我正在使用用于访问链接表的 VBA 模块,根据数据生成报告,然后使用 PDF 打印机将报告保存到磁盘。主表单中有一个计时器,它将每隔 N 秒对“JOBQUEUE”表运行一次 Access 查询,以查看是否有新作业。

如果数据库服务器变得不可用,这个操作当然会超时。正在记录 3051 的运行时错误,循环将尝试继续。但是,循环无法完成,因为在 VB 运行时错误之后出现以下错误;

标题是“Microsoft SQL Server Login”,所以据我所知,它不在 VB 中。

Connection Failed:
SQLState: '01000'
SQL Server Error: 53
[Microsoft][ODBC SQL Server Driver][DBNETLIB][ConnectionOpen(Connect()).
Connection Failed:
SQLState: '08001'
SQL Server Error: 17
[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not 
exist or access is denied.

在我发现提到此错误的每个论坛和讨论中,提问者都关心错误的原因。在这种情况下,我可以假设错误是暂时的,并且它需要继续尝试连接,因为安装是无人值守的。访问在对数据库超时时进入“未响应...”状态,这也可以,如果连接在进入上述 MsgBox 之前恢复,它将从中断的地方继续并继续前进。

有谁知道我可以静音那个 msgbox 的方法,最好是通过编程,但我现在会采取任何可以远程完成的不是 RDP 会话的事情。

编辑:图片链接

4

1 回答 1

1

我得到的错误确实不是可以从代码中捕获的运行时错误。相反,在我已经在我的 VBA 模块中吞并并消除了运行时超时之后,SQL 超时。

由于我引入了一个新计时器,该计时器重置了针对我的链接表运行查询的循环,因此该错误似乎从未出现过。它无法被记录和吞下,但可以通过更聪明地处理运行时超时的方式来防止它。

于 2013-03-07T17:35:55.093 回答