使用VBA处理SQL Server登录错误消息?

问题描述:

我正在VBA Access模块​​中查询链接表,根据数据生成报告,然后使用PDF打印机将报告保存到磁盘。主窗体中有一个计时器,每隔N秒钟,将针对“JOBQUEUE”表运行Access查询以查看是否有新作业。使用VBA处理SQL Server登录错误消息?

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

标题是“Microsoft SQL Server登录”,所以它不在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会话。

编辑:Link to image

+0

如何处理异常?它不工作? – shibormot 2013-02-27 21:10:46

+0

@shibormot,我在记录“运行时3151:ODBC - 连接到'MyServerName'失败。”,但是这个错误在VB之外,据我所知。我在OP中添加了一个链接到图像。 – wastubbs 2013-02-27 22:27:15

+0

我的意思是你是否尝试用'On Error'' GoTo'和'Resume'来处理异常?如下所述:http://msdn.microsoft.com/en-us/library/office/bb258159%28v=office.12%29.aspx – shibormot 2013-02-28 00:36:06

我得到的错误是不确实能够从代码捕获运行时错误。相反,在我的VBA模块中,我已经在运行时间中吞并了&解雇的超时之后,SQL超时。

现在似乎并没有出现错误,因为我已经引入了一个新的计时器,该计时器重置了对我的链接表运行查询的循环。它不能被记录&吞下,但可以通过更聪明地了解我如何在运行时处理超时来阻止它。