在VB中用ADO数据控件连接SQL SERVER数据库,程序运行时,如果SQL SERVER没有启动,系统自动报错。如何在系统自动报错之前抓到报错句柄,利用VB程序控制错误!

解决方案 »

  1.   

    On Error GoTo DBOpenErr
        
        Set cnnDB = New ADODB.Connection
        If strConn <> "" Then
            cnnDB.Open strConn
            msgbox "连接成功"
        End If
        exit sub
    DBOpenErr:
        msgbox "连接失败"
      

  2.   

    On Error GoTo line 
    On Error GoTo 0Error GoTo line  启动错误处理程序,且该例程从必要的 line 参数中指定的 line 开始。line 参数可以是任何行标签或行号。如果发生一个运行时错误,则控件会跳到 line,激活错误处理程序。指定的 line 必须在一个过程中,这个过程与 On Error 语句相同; 否则会发生编译时间错误。 On Error GoTo 0 禁止当前过程中任何已启动的错误处理程序。 
      

  3.   

    用 vb 提供的On Error GoTo 对用代码连接数据库处理是没有问题。但是用ADO控件连的话就不行了。比如在Form1中放了一个ADO控件。程序跟踪运行到form1.show是就出错。怎么决绝这问题
      

  4.   

    Option Explicit
    Public SqlConn As New ADODB.Connection'功能简介:建立SQL数据库公共链接
    '参数一:服务器名或IP
    '参数二:数据库名称
    '参数三:登陆用户名称
    '参数四:登陆用户密码
    '参数五:延时
    '返回值:"ok"--成功, 否则返回错误信息
    Function PulbicSQLConn(StrServerName As String, StrDataName As String, StrUserName As String, StrPassword As String, IntOutTime As Integer) As String
        On Error GoTo SQLConnErr
        Dim StrSql As String
        StrSql = "Provider=sqloledb;Data Source=" & StrServerName & ",1433;Initial Catalog=" & StrDataName & ";User ID=" & StrUserName & ";Password=" & StrPassword & ";"
        If SqlConn.State <> 0 Then SqlConn.Close
        SqlConn.ConnectionTimeout = IntOutTime
        SqlConn.Open StrSql
        PulbicSQLConn = "ok"
        Exit Function
    SQLConnErr:
        PulbicSQLConn = Err.Description
        If SqlConn.State <> 0 Then SqlConn.Close: Set SqlConn = Nothing
    End Function'功能简介:关闭SOL数据库公共链接
    Function PublicMdbClose()
        If SqlConn.State <> 0 Then SqlConn.Close: Set SqlConn = Nothing
    End Function
      

  5.   

    on error resume next
      

  6.   

    我觉得on error resume next比较好
    On Error Resume Next
    ...连接代码
    If Err.Number <> 0 Then
       MsgBox Err.Description, vbCritical
    End If