'DBオープン
             OP_RET = INIT_DB
             
             If OP_RET = False Then
                 fncErrMsgProcess
             End If
Public Sub fncErrMsgProcess()On Error GoTo fncErrMsgProcess_err
 
        Unload TEACHfrm
        TEACHfrm.Show
        TEACHfrm.Caption = ""
        TEACHfrm.Label2.Caption = "ネットワーク障害が発生しました。管理者に連絡して下さい。"
        Unload Pushfrm       Sleep (60000)        'DBオープン
        OP_RET = INIT_DB        If OP_RET = False Then
            fncErrMsgProcess
        End IffncErrMsgProcess_err:
     Resume Next
         
End Sub

解决方案 »

  1.   

    INIT_DB =false的时候就是个死循环,程序一旦进入那个函数就不会出来了,因为在函数内部没有给INIT_DB 这个值重新赋值
      

  2.   

    TEACHfrm.Show 如果在这个窗口里面重新赋了INIT_DB的值,那么就正常了,应该,前提条件是INIT_DB是个全局变量
      

  3.   

    楼主你这代码到底是有问题还是没问题呢?
    如楼上所说,看起来像是死循环,但你这个做的是报警系统,应该是弹出窗体后等人操作,否则一直报警,INIT_DB应该会改变值。
      

  4.   

    恩,我刚才没有说清楚,INIT_DB是个全局变量 当INIT_DB没有改变的时候,就是要一遍一遍不停的循环问题是,我主要想让它把那个MSG表示出来,设断点就能看到msg,不设断点看不到msg,不知道问题出在那里?
      

  5.   

    楼上的哥哥,偶要哭了~~~ TEACHfrm.Label2.Caption = "ネットワーク障害が発生しました。管理者に連絡して下さい。" 
    这个就是啊,只不过是用form的label表示出来的。
      

  6.   

    VB有时执行太快了,界面刷新不过来,所以没显示出来.你可以在后面刷新试一下
    在TEACHfrm.Label2.Caption = "ネットワーク障害が発生しました。管理者に連絡して下さい。"
    后面加一句
    refresh
      

  7.   

    问题解决了,谢谢9楼帅哥,还有一个问题,refresh一下之后,循环还继续是吧?
      

  8.   

    Public Sub fncErrMsgProcess() On Error GoTo fncErrMsgProcess_err         Unload TEACHfrm 
            TEACHfrm.Show 
            TEACHfrm.Caption = "" 
            TEACHfrm.Label2.Caption = "ネットワーク障害が発生しました。管理者に連絡して下さい。" 
            Unload Pushfrm       Sleep (60000)         'DBオープン 
            OP_RET = INIT_DB         If OP_RET = False Then 
                fncErrMsgProcess 
            End If fncErrMsgProcess_err: 
        Resume Next 
            
    End Sub从代码结构上来看是一个递归,而你这递归结束的条件是OP_RET为T,或者出现堆栈溢出错误...不过错误已经被捕捉了,所以一旦出错就会返回你说的显示MSG,不知道是不是指TEACHfrm.Label2.Caption = "ネットワーク障害が発生しました。管理者に連絡して下さい。" 这一段.如果是的话,那在这一句后面加上一句DOEVENTS看看.因为在SLEEP时调用线程是被挂起的,可能没有及时更新界面.
      

  9.   


    TEACHfrm.Label2.Caption = "ネットワーク障害が発生しました。管理者に連絡して下さい。" 
    加一句:
    DoEvents
    试试~~~
    ======================
    你的代码:
    On Error GoTo fncErrMsgProcess_err 
    ..............fncErrMsgProcess_err: 
        Resume Next 
    不如就写成:
    On Error Resume Next
    还好些。
      

  10.   

    这里果真高人很多,我一点都没有想到这个,还一直以为是逻辑有问题 
    On Error Resume Next 也学习了谢谢~~~