我有一个代码来打开表单时检查访问和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
答案 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