问题描述:
正在开发的软件需要检测网络(局域网)状态,写了一个检测的子过程(使用ADO),并在程序界面用timer来不断调用检测网络。运行软件时假设网络为通,timer运行时间为65535毫秒(每隔65秒检测一次网络),当网络由通变断时,timer能够检测出来,并显示网络故障的提示,而当网络由断变通时,却检测不到了。一直还是断的状态。不知道怎么回事,请大家帮忙看一下,在线等!先谢了,下面是具体语句:'TimeSyn模块功能:1.检测网络状态;2.同步服务器时间
Public Sub TimeSyn()
    On Error GoTo errorhandle
    Dim sqlstr As String
    Dim RetCn As ADODB.Connection
    Dim RetRs As ADODB.Recordset
    Dim SerDate As Date
    
    Set RetCn = New ADODB.Connection
    RetCn.ConnectionTimeout = 3
    RetCn.Open "Driver={SQL Server};Server=" & ServerName & ";Database=lxsf;Uid=sa;Pwd="
    If Connect = True Then
        Set RetRs = New ADODB.Recordset
        sqlstr = "select getdate() as Nowdate "
        RetRs.Open sqlstr, RetCn, adOpenDynamic, adLockOptimistic
        
        If Not RetRs.EOF Then
            RetRs.MoveFirst
            SerDate = CDate(Format(RetRs.Fields(0).value, "yyyy-mm-dd hh:mm:ss"))
        End If
        'MsgBox SerDate
        Set RetRs = Nothing
        Set RetCn = Nothing
        Date = SerDate
        Time = SerDate
        Connect = True
    End If
    Exit Sub
errorhandle:
    Connect = False
    Resume Next
End Subtimer过程:
Private Sub Timer1_Timer()
    '每隔1.1分钟:1检测网络通断,如果网断,则给出提示(不同步与服务器的时间);2.如果网络通,与服务器时间同步
    Call TimeSyn
    If Connect = False Then
        Label1.caption = "网络故障"  '如果网络故障,则屏幕上给出提示
    Else
        Label1.caption = "" '如果网络通畅,则将提示隐藏
    End If
End Sub

解决方案 »

  1.   

    你判断网络是否通畅的代码在那里???难道是通过RetCn.Open 连接错误来得到的??
      

  2.   

    是啊,连接错误以后,返回connect为flase
    在ADO里有别的办法吗?
    或者不用ado的其他方法也可以,请告知!
      

  3.   

    If Connect = True Then
            Set RetRs = New ADODB.Recordset
            sqlstr = "select getdate() as Nowdate "
            RetRs.Open sqlstr, RetCn, adOpenDynamic, adLockOptimistic
            
            If Not RetRs.EOF Then
                RetRs.MoveFirst
                SerDate = CDate(Format(RetRs.Fields(0).value, "yyyy-mm-dd hh:mm:ss"))
            End If
            'MsgBox SerDate
            Set RetRs = Nothing
            Set RetCn = Nothing
            Date = SerDate
            Time = SerDate
            Connect = True'''''''网络恢复后也无法执行这一句
        End If
    =====================================================================
    楼主仔细理顺一下流程,你看看当connect=false以后,还有办法执行connect=true这一句吗?
    If Connect = True Then 这个条件导致一旦网络断掉,connect=true这一句就永远无法执行了