Foxtable(狐表)用户栏目专家坐堂 → 网络故障时如何避免连续弹出错误?


  共有1726人关注过本帖树形打印复制链接

主题:网络故障时如何避免连续弹出错误?

帅哥哟,离线,有人找我吗?
HappyFt
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17576 威望:0 精华:0 注册:2014/7/29 19:09:00
网络故障时如何避免连续弹出错误?  发帖心情 Post By: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

这种情况如何才能友好的禁止后面正在运行的代码执行?
谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17576 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By: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
因为网络中断时用户可能正在执行一堆的代码,断网时虽然有上述提示,但用户响应后后面就会接着弹出相关的一堆错误了

 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17576 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2024/6/13 22:06:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20240613220011.png
图片点击可在新窗口打开查看

beforeShowErrorMessage事件中仅使用 e.Cancel = True 一句代码

在导航中点击一个表单后马上拔掉网线还是会出现类似上面的一系列出错窗口,也就是点击表单后需要打开窗口加载数据显示目录树等
是不是这个事件不能捕捉到这类错误,有其他办法吗?

最好网络不通时就能停止所有正在执行的代码?

 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17576 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By: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

现在的问题是用户操作中可能突然网络断开了,然后就弹出上面的网络提示窗口,一直到网络又恢复时自动关闭网络提示窗口后
又会执行网络断开前还没有执行完成的代码,这样就弹出一堆的错误窗口了


 回到顶部
帅哥哟,离线,有人找我吗?
HappyFt
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1930 积分:17576 威望:0 精华:0 注册:2014/7/29 19:09:00
  发帖心情 Post By:2024/6/14 16:34:00 [显示全部帖子]

没有办法当网络断开出现第一个错误弹出网络提示窗后就终止后面还没有执行完成的代码吗?
不然用户感觉这样体验很不好!当然如果点击直接退出是没有这个问题

 回到顶部