'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
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
如楼上所说,看起来像是死循环,但你这个做的是报警系统,应该是弹出窗体后等人操作,否则一直报警,INIT_DB应该会改变值。
这个就是啊,只不过是用form的label表示出来的。
在TEACHfrm.Label2.Caption = "ネットワーク障害が発生しました。管理者に連絡して下さい。"
后面加一句
refresh
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时调用线程是被挂起的,可能没有及时更新界面.
TEACHfrm.Label2.Caption = "ネットワーク障害が発生しました。管理者に連絡して下さい。"
加一句:
DoEvents
试试~~~
======================
你的代码:
On Error GoTo fncErrMsgProcess_err
..............fncErrMsgProcess_err:
Resume Next
不如就写成:
On Error Resume Next
还好些。
On Error Resume Next 也学习了谢谢~~~