用ado连接sql时 如果服务器不存在或网速很慢都会造成vb假死,请问怎么解决这个问题,
我查了一早上也没解决...就看到DoEvents这么一个函数.不知道怎么用,也不知道对这个问题有用没.\
本人很菜希望给出代码.    conn.ConnectionString = "driver={sql server};server=" ";uid="  ";pwd=" &  ";Database=" ""
    conn.ConnectionTimeout = 25
    conn.Open上面执行到conn.Open时就会假死就算ConnectionTimeout设置的很小一样会死.

解决方案 »

  1.   

    加上出错判断语句Public Function Fun_DBConnect() As Boolean
        
        On Error GoTo ErrHandle    conn.ConnectionString = "driver={sql server};server=" ";uid="  ";pwd=" &  ";Database=" "" 
        conn.ConnectionTimeout = 25 
        conn.Open 
        Fun_DBConnect = True
        
        Exit Function
        
    ErrHandle:
        MsgBox ERR.Number & ERR.Description & " 请联系电算化办公室"
        Fun_DBConnect = False
        
    End Function
      

  2.   


    确实会这样,不过一般局域网内用的系统,这种现象好不多,基本可以忽略吧....
    如果确实必要解决连接假死状态,我想是不可以弄个activeX.exe 去做连结这个事情,还真没认真考虑过这样的问题....
      

  3.   

    假死原因:conn.ConnectionTimeout = 25 这个时间即是连接数据库的时间,也是执行SQL语句所用的时间限制。比如SQL语句较为复杂时,可能用时10秒以上,所以时间一般设置为30秒。
      

  4.   

    异步连接:Dim WithEvents cn As ADODB.ConnectionPrivate Sub cmdConnect_Click()
        Set cn = New ADODB.Connection
        cn.ConnectionTimeout = 20
        cn.Open "Provider=sqloledb;Data Source=MyServer;" _
            & "Initial Catalog=pubs;", "sa", , adAsyncConnect
    End Sub