以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  怎么实现项目打开成功后,运行过程中,数据源连接不成功时,提示用户,并暂停所有的计划管理事件或其他代码事件的运行,待数据源连接恢复或者重启项目后,在恢复项目所有功能的运行呢?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=177284)

--  作者:cnsjroom
--  发布时间: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


--  作者:有点蓝
--  发布时间:2022/5/16 13:33:00
--  
并不是所有的错误都要屏蔽和退出项目的。只需要判断数据源即可,其它的错误应该找到原因并解决掉
--  作者:cnsjroom
--  发布时间:2022/5/16 14:21:00
--  回复:(有点蓝)并不是所有的错误都要屏蔽和退出项目...

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

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


--  作者:有点蓝
--  发布时间:2022/5/16 14:35:00
--  
没有办法。建议数据源连接不成功,提示用户然后退出整个项目
--  作者:cnsjroom
--  发布时间:2022/5/16 15:42:00
--  回复:(有点蓝)没有办法。建议数据源连接不成功,提...
这个代码应该写在哪个事件里呢?比较好呢?
--  作者:有点蓝
--  发布时间:2022/5/16 15:46:00
--  
BeforeShowErrorMessage
--  作者:cnsjroom
--  发布时间:2022/5/16 17:43:00
--  回复:(有点蓝)BeforeShowErrorMessage

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

 

 

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


--  作者:有点蓝
--  发布时间: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