Foxtable(狐表)用户栏目专家坐堂 → 怎么实现项目打开成功后,运行过程中,数据源连接不成功时,提示用户,并暂停所有的计划管理事件或其他代码事件的运行,待数据源连接恢复或者重启项目后,在恢复项目所有功能的运行呢?


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

主题:怎么实现项目打开成功后,运行过程中,数据源连接不成功时,提示用户,并暂停所有的计划管理事件或其他代码事件的运行,待数据源连接恢复或者重启项目后,在恢复项目所有功能的运行呢?

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
怎么实现项目打开成功后,运行过程中,数据源连接不成功时,提示用户,并暂停所有的计划管理事件或其他代码事件的运行,待数据源连接恢复或者重启项目后,在恢复项目所有功能的运行呢?  发帖心情 Post By:2022/5/16 11:54:00 [只看该作者]

当前已经实现项目打开前进行数据源连接判断,连接成功打开项目,反之就直接退出项目;怎么实现项目打开成功后,运行过程中,数据源连接不成功时,提示用户,并暂停所有的计划管理事件或其他代码事件的运行,待数据源连接恢复或者重启项目后,在恢复项目所有功能的运行呢?

 

daimBeforeConnectOuterDataSource代码:

Dim File As String = e.ProjectPath & "\Attachments\Connect.Ini"
e.ConnectionString = FileSys.ReadAllText(File)

 

BeforeOpenProject代码:

Dim s  As  String = FileSys.GetParentPath(e.File) &  "\Attachments\Connect.Ini"
'MessageBox.Show(s)
If FileSys.FileExists(s) =  False  Then
    e.Cancel = True
    e.HideSplashForm = True
    MessageBox.show("Connect.Ini文件丢失,无法打开此项目.")
   
Else
    Dim ErrMsg As String
    Dim Conn As String = FileSys.ReadAllText(s)
    If Connections.TryConnect(Conn,ErrMsg) = False Then
        vars("数据源状态")=False
        MessageBox.Show("数据源无法连通" & vbcrlf & "原因:" & ErrMsg    & vbcrlf & "点击确定,退出当前系统,请重新启动程序!"  ,"温馨提示")
        Syscmd.Project.Exit()
    Else
        vars("数据源状态")=True
    End If
End  If

 

AfterOpenProject代码:

Dim File As String = ProjectPath & "\Attachments\Connect.Ini"
Dim ErrMsg As String
Dim Conn As String = FileSys.ReadAllText(File)
If Connections.TryConnect(Conn,ErrMsg) = False Then
    MessageBox.Show("数据源无法连通" & vbcrlf & "原因:" & ErrMsg    & vbcrlf & "点击确定,退出当前系统,请重新启动程序!"  ,"温馨提示")    
    vars("数据源状态")=False
    Syscmd.Project.Exit()
Else

 

 

BeforeShowErrorMessage代码:【项目正常运行过程中,不会一直直接弹出“数据库服务器链接失败”的提示,经常会弹出对应的message1内容!】

If vars("已弹出") = False
   
    If e.message1.Contains("给定关键字不在字典中") OrElse e.message1.Contains("未将对象引用设置到对象的实例") OrElse e.message1.Contains("登录超时已过期") OrElse e.message1.Contains("无法完成延迟准备") OrElse e.message1.Contains("调用的目标发生了异常") OrElse e.message1.Contains("自定义函数") OrElse e.message1.Contains("一般性网络错误") OrElse e.message1.Contains("[DBNETLIB][ConnectionOpen (Connect()).]SQL Server 不存在或拒绝访问") OrElse e.message1.Contains("不存在或拒绝访问") Then
        e.Cancel = True
        vars("已弹出") = True
        vars("数据源状态")=False
        'output.show(e.message1)
        'MyTimers("判断是否有会议开始并启动登录").Enabled = False
        'MyTimers("判断会议状态关闭会议主体及预览").Enabled = False
       
        MessageBox.Show("数据库服务器链接失败,请点击确定退出程序后,联系管理员处理!!","温馨提示")
       
        Syscmd.Project.Exit()
    End If
   
End If


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105877 积分:538442 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/16 13:33:00 [只看该作者]

并不是所有的错误都要屏蔽和退出项目的。只需要判断数据源即可,其它的错误应该找到原因并解决掉

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)并不是所有的错误都要屏蔽和退出项目...  发帖心情 Post By:2022/5/16 14:21:00 [只看该作者]

老师有没有简单粗暴的方式

在项目正常打开后,运行的过程中如果数据源连接不成功  就提示用户  并且取消其他任何非数据源连接不成功弹出的提示   只弹出数据源连接不成功的提示即可!


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105877 积分:538442 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/16 14:35:00 [只看该作者]

没有办法。建议数据源连接不成功,提示用户然后退出整个项目

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)没有办法。建议数据源连接不成功,提...  发帖心情 Post By:2022/5/16 15:42:00 [只看该作者]

这个代码应该写在哪个事件里呢?比较好呢?

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105877 积分:538442 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/16 15:46:00 [只看该作者]

BeforeShowErrorMessage

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)BeforeShowErrorMessage  发帖心情 Post By:2022/5/16 17:43:00 [只看该作者]

还是维持我原来的代码么?  下述代码有没有办法再精简些   提示数据库连接失败  然后直接退出项目

 

 

If vars("已弹出") = False
   
    If e.message1.Contains("给定关键字不在字典中") OrElse e.message1.Contains("未将对象引用设置到对象的实例") OrElse e.message1.Contains("登录超时已过期") OrElse e.message1.Contains("无法完成延迟准备") OrElse e.message1.Contains("调用的目标发生了异常") OrElse e.message1.Contains("自定义函数") OrElse e.message1.Contains("一般性网络错误") OrElse e.message1.Contains("[DBNETLIB][ConnectionOpen (Connect()).]SQL Server 不存在或拒绝访问") OrElse e.message1.Contains("不存在或拒绝访问") Then
        e.Cancel = True
        vars("已弹出") = True
        vars("数据源状态")=False
        
        MessageBox.Show("数据库服务器链接失败,请点击确定退出程序后,联系管理员处理!!","温馨提示")
       
        Syscmd.Project.Exit()
    End If
   
End If


 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105877 积分:538442 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/5/16 20:25:00 [只看该作者]

和数据库无关的判断都去掉

If vars("已弹出") = False
If e.message1.Contains("一般性网络错误") OrElse e.message1.Contains("不存在或拒绝访问") Then
      e.Cancel = True
        vars("已弹出") = True
        vars("数据源状态")=False
        
        MessageBox.Show("数据库服务器链接失败,请点击确定退出程序后,联系管理员处理!!","温馨提示")
       
        Syscmd.Project.Exit()
    End If
else
e.Cancel = True  
End If

 回到顶部