因为我们的服务器不是专门的,也只是一台数据服务器,是按上班时间正常关闭的,所以有时走的早来得迟也是难免的,所以有必要在启动时做一个预处理,若服务器未开就提示用户连接失败,退出。我不想用 Timer控件来做,因为我的开发是在EXCEL+ACCESS的平台,每次增加控件都得重新注册,很麻烦,而且局域网内用户较多,所以想只用代码解决。经查询在CSDN中有网友已经提问如下解决,
Private Sub Timer1_Timer()
    If conn.State = adStateClosed Then
        If MsgBox("数据库连接没有完成,是否继续等待", vbExclamation + vbYesNo)=vbOk Then
             Exit Sub
        Else
             Unload Me
             End
        End If
    Else
        Timer1.Enabled = False
    End If
End Sub如果我不用Timer控件,这代码该如何写呀?利用ConnectionTimeout 属性 (ADO)如何解决这个超时连接的问题?谢谢!

解决方案 »

  1.   

    你不必用timer呀。在调用con.open时,如果服务器没有打开便会连接失败,你可以直接提示用户。
    con.ConnectionTimeout  = 15
      

  2.   

    on error goto errorHandler
      conn.open ...
      exit sub
    errorHandler:
      加出错处理(连接失败,退出)
      

  3.   

    晕了,用access来做服务器,哈哈,高人啊,我是不敢想,换了俺,俺一定会用ms sql
      

  4.   

    Hassle() 完整的代码如何写呀?
    Sub mydovro()
    Set CNN = CreateObject("ADODB.Connection")
    Set RST = CreateObject("ADODB.Recordset")
    CNN.Open "provider=Microsoft.jet.OLEDB.4.0;data source=" & "d:\dovro\sales.mdb"
    CNN.ConnectionTimeout = 15
      If CNN.State = adStateClosed Then
            If MsgBox("数据库连接没有完成,是否继续等待", vbExclamation + vbYesNo) = vbOK Then
                 Exit Sub
            End Sub
    好象不对哦!
      

  5.   

    Option Explicit' 引用 Microsoft ActiveX Data Objects 2.5 LibraryPublic moConn As ADODB.ConnectionPublic Sub InitializeConnection()
        Set moConn = New ADODB.Connection
        On Error GoTo ErrorHandler
        moConn.Open "Provider=Microsoft.jet.OLEDB.4.0;Data Source=C:\DoNotExist.mdb"
        Exit Sub
    ErrorHandler:
        MsgBox Err.Description
    End SubPublic Sub TerminateConnection()
        On Error Resume Next
        moConn.Close
        Set moConn = Nothing
    End Sub
      

  6.   

    SQL Server成本高,Access成本低要求不高的话Access是个不错的选择