其他部分代码保持超时

时间:2014-02-28 15:46:33

标签: vba ms-access

我有一个代码来打开表单时检查访问和sql server之间的连接。如果有连接,则弹出一个消息框并说明。如果不是,则应该有一个消息框,表明没有连接。相反,我得到错误:

Run Time Error '-2147467259 (80004005)':
[DBNETLIB][ConnectionOpen (Connect()).]Specified SQL Server Not Found

这不是我想要它做的,是我的编码中的东西还是没有办法让它工作?

Public Sub AutoExec()
Dim cnn As ADODB.Connection
Dim localrst As New ADODB.Recordset
Dim remoterst As New ADODB.Recordset

Set cnn = New ADODB.Connection
cnn.Open "Provider=SQLOLEDB; Data Source=DB; Initial Catalog=HRLearnDev;" _
& "User Id=ID; Password=PW;"

If cnn.State = adStateOpen Then

MsgBox ("You have an established connection with the L&TD SQL Server Database.")
Else
MsgBox ("Cannot connect to remote server. Data will be stored locally  to CDData Table until application is opened again.")

End If

cnn.Close



End Sub

1 个答案:

答案 0 :(得分:2)

在这种情况下,您通常希望使用On Error GoTo构造 - 然后在发生错误时将代码发送到错误处理程序(您可以进行测试以确保错误编号符合您的预期{{ 1}})。

但是,在您的情况下,使用Err.Num可能更容易。这告诉解释器“如果发生错误,请转到下一行。我将找出问题并处理它。”

当您有一个产生错误或合理值的函数调用时,通常会执行此操作。我经常做这样的事情:

On Error Resume Next

在你的情况下,这几乎就是你要做的事情。完整的例子:

On Error Resume Next
returnValue = -1
returnValue = functionThatReturnsPositiveValue()
If returnValue < 0 Then
  MsgBox "oops - the function failed!"
Else
  ' <<<< do whatever needs doing >>>>
End If