以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 网络故障时如何避免连续弹出错误? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=192318) |
-- 作者:HappyFt -- 发布时间:2024/6/13 12:05:00 -- 网络故障时如何避免连续弹出错误? 如题,当正在使用中的项目网络出问题时,用户界面就会出错,弹出一大堆关不完的窗口, 有没有办法此时仅弹出一个对话框提示网络出问题了,但不要再弹出其他错误的窗口来 现在是在NetWorkAddressChanged事件中判断网络状态,2秒连接不上就弹出一个提示框, If TryConnectHost(db_IP) Then Dim myConnStr As New ConnStr.ConnNetStr Vars("网络状态") = myConnStr.ConnNetStrByConnStr(Connections(Mydata).ConnectionString, 2000) \'2秒内判断网络 If Vars("网络状态") = True Then If Forms("网络提示").Opened Then \'关闭网络断开时弹出的提示框 Forms("网络提示").Close End If End If End If 这种情况如何才能友好的禁止后面正在运行的代码执行? 谢谢!
|
-- 作者:有点蓝 -- 发布时间:2024/6/13 12:21:00 -- 到这个事件禁掉:http://www.foxtable.com/webhelp/topics/2655.htm,e.cancel=true,不过禁掉前最好使用日志记录一下错误,不然正常的错误都屏蔽掉,就无法跟踪解决问题了 |
-- 作者:HappyFt -- 发布时间:2024/6/13 14:28:00 -- 已经在beforeShowErrorMessage事件中用了下面的代码: If e.Message2.indexof("一般性网络错误") > -1 Or e.Message2.indexof("SQL Server 不存在") > -1 Then e.Cancel = True If Forms("网络提示").Opened = False Then Forms("网络提示").Open End If ElseIf e.Message2.indexof("查询超时已过期") > -1 e.Cancel = True msgbox("查询超时,请检查网络!") Else CanSave = False msgbox("执行中出现异常,请联系管理员!") End If 因为网络中断时用户可能正在执行一堆的代码,断网时虽然有上述提示,但用户响应后后面就会接着弹出相关的一堆错误了
|
-- 作者:有点蓝 -- 发布时间:2024/6/13 14:51:00 -- e.Cancel = True放到第一行,把所有错误都屏蔽掉 |
-- 作者:HappyFt -- 发布时间:2024/6/13 22:06:00 -- 此主题相关图片如下:微信截图_20240613220011.png beforeShowErrorMessage事件中仅使用 e.Cancel = True 一句代码 在导航中点击一个表单后马上拔掉网线还是会出现类似上面的一系列出错窗口,也就是点击表单后需要打开窗口加载数据显示目录树等 是不是这个事件不能捕捉到这类错误,有其他办法吗? 最好网络不通时就能停止所有正在执行的代码?
|
-- 作者:有点蓝 -- 发布时间:2024/6/13 23:29:00 -- 已经执行的代码没有办法停止,除非是beforeShowErrorMessage出现网络错误就直接退出项目 正常beforeShowErrorMessage事件中仅使用 e.Cancel = True是不会再弹出错误的,如果确实还弹出是没有办法了。 5楼的提示窗口会不会是Forms("网络提示")这个窗口?
|
-- 作者:HappyFt -- 发布时间:2024/6/14 14:24:00 -- 此主题相关图片如下:微信截图_20240613220011.png 网络提示的窗口是像上面这样的,我是用3楼的代码当网络断开时打开网络提示窗口,在此窗口的关闭前又设置了检测网络的代码,如果不点直接退出用户就无法关闭这个窗口 5楼的窗口是打开付款单时afterload中要加载表结构进来运行的代码出的错,如: Select
a.*, (select top 1 科目名称 from bugetAcc x0 where a.科目代码 = x0.科目代码) As 科目名称 from 付款单 a where a.[_Identify] = 0 现在的问题是用户操作中可能突然网络断开了,然后就弹出上面的网络提示窗口,一直到网络又恢复时自动关闭网络提示窗口后 又会执行网络断开前还没有执行完成的代码,这样就弹出一堆的错误窗口了 |
-- 作者:有点蓝 -- 发布时间:2024/6/14 14:50:00 -- 这个没有办法 |
-- 作者:HappyFt -- 发布时间:2024/6/14 16:34:00 -- 没有办法当网络断开出现第一个错误弹出网络提示窗后就终止后面还没有执行完成的代码吗? 不然用户感觉这样体验很不好!当然如果点击直接退出是没有这个问题
|
-- 作者:有点蓝 -- 发布时间:2024/6/14 16:41:00 -- 已经在执行的代码是无法终止的。除非强制退出 |