以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  提醒是否要升级  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=191009)

--  作者:edisontsui
--  发布时间:2024/3/20 16:30:00
--  提醒是否要升级
Syscmd.Project.Update(False, True, False) 

我将上述代码放在 maintablechanging 里面,希望切换主表时,提醒用户是否要对系统进行升级。如果他要升级,就点击Yes;如果他不要升级,就点击 No。但是运行时出现如下警告:

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.8.18.1
错误所在事件:在线升级失败!
详细错误信息:
不支持给定路径的格式。

请问要怎样修改代码?谢谢。

--  作者:有点蓝
--  发布时间:2024/3/20 16:35:00
--  
这个错误提示应该是升级路径不正确。

这个代码不应该放到maintablechanging,难道用户每切换一次主表,就提醒一次升级?我如果碰到这种程序第一时间考虑的是卸载掉。

考虑放到按钮,或者菜单里,然后用户自行点击。或者和帮助一样放到AfterOpenProject事件处理。

--  作者:edisontsui
--  发布时间:2024/3/20 16:57:00
--  
好的
--  作者:edisontsui
--  发布时间:2024/5/7 9:03:00
--  
        If LastInputTickCount > 300000 Then \'停用5分钟则会执行
            Dim s As String = FileSys.ReadAllText("\\\\BOSON\\Foxtable\\Foxtable\\升级文件\\update.txt") \'取得最新发布时间
            Dim dt1 As Date = CDate(s.Substring(0, 10))
            If Publishdate = dt1 Then
                If user.group IsNot Nothing Then
                    Dim Str1 As String = "用户名: " & User.Name & "  用户组别: " & user.group & "  系统发布日期: " & Publishdate \'& "  当前时间: " & Date.now \'当前时间没有意义
                    StatusBar.Message1 = Str1
                Else
                    Dim Str1 As String = "用户名: " & User.Name & "  系统发布日期: " & Publishdate \' & "  当前时间: " & Date.now
                    StatusBar.Message1 = Str1
                End If
            ElseIf Publishdate < dt1 Then
                If user.group IsNot Nothing Then
                    Dim Str1 As String = "用户名: " & User.Name & "  用户组别: " & user.group & "  系统发布日期: " & Publishdate & "  已有最新版本, 发布日期为 " & dt1 & ", 请适时重新登录系统。"
                    StatusBar.Message1 = Str1
                Else
                    Dim Str1 As String = "用户名: " & User.Name & "  系统发布日期: " & Publishdate & "  已有最新版本, 发布日期为 " & dt1 & ", 请适时重新登录系统。"
                    StatusBar.Message1 = Str1
                End If
            End If
        End If

上面代码放在 systemidle 里面,目的是:如果用户登录了旧版本的系统(比如2024-04-27发布的),那么当有了最新版本的系统(比如2024-05-07发布的)后,就会提示他目前使用的版本是哪个日期的,现在的最新版本是哪个日期的。但是实际上却只会显示最新版本的日期,而旧版本的日期却不显示,也就是说,没有执行红色那段代码。请问是什么原因?谢谢。

--  作者:有点蓝
--  发布时间:2024/5/7 9:07:00
--  
学会调试

msgbox(dt1)
msgbox(Publishdate )
msgbox(Publishdate < dt1)
--  作者:edisontsui
--  发布时间:2024/5/11 10:32:00
--  
            Dim dt1 As Date = CDate(s.Substring(0, 10))
            If Publishdate = dt1 Then
                \'MsgBox("无需更新") 这句没问题
                If user.group IsNot Nothing Then
                    Dim Str1 As String = "用户名: " & User.Name & "  用户组别: " & user.group & "  系统发布日期: " & Publishdate \'& "  当前时间: " & Date.now \'当前时间没有意义
                    StatusBar.Message1 = Str1
                Else
                    Dim Str1 As String = "用户名: " & User.Name & "  系统发布日期: " & Publishdate \' & "  当前时间: " & Date.now
                    StatusBar.Message1 = Str1
                End If
            ElseIf Publishdate < dt1 Then
                \'MsgBox("提示你是否需要重新登录更新版本。") 这句没问题
                If user.group IsNot Nothing Then
                    Dim Str1 As String = "用户名: " & User.Name & "  用户组别: " & user.group & "  系统发布日期: " & Publishdate & "  已有最新版本, 发布日期为 " & dt1 & ", 请适时重新登录系统。"
                    StatusBar.Message1 = Str1
                    \'MsgBox("提示1:已有最新版本放行了,你是否需要重新登录更新版本。") 这句没问题
                Else
                    Dim Str1 As String = "用户名: " & User.Name & "  系统发布日期: " & Publishdate & "  已有最新版本, 发布日期为 " & dt1 & ", 请适时重新登录系统。"
                    StatusBar.Message1 = Str1
                    \'MsgBox("提示2:已有最新版本放行了,你是否需要重新登录更新版本。") 这句没问题
                End If
            End If

一4楼的代码,我加了多个 msgbox 进行测试(绿色那些代码),都会执行。但就是红色那部分内容出不来。

--  作者:cd_tdh
--  发布时间:2024/5/11 10:43:00
--  
 Dim Str1 As String = "用户名: " & User.Name & "  系统发布日期: " & Publishdate \' & "  当前时间: " & Date.now
这儿也不对,多了个单引号
或是这样写试试
If LastInputTickCount > 300000 Then \'停用5分钟则会执行
    Dim s As String = FileSys.ReadAllText("\\\\BOSON\\Foxtable\\Foxtable\\升级文件\\update.txt") \'取得最新发布时间
    Dim dt1 As Date = CDate(s.Substring(0, 10))
    If Publishdate = dt1 Then
        If user.group IsNot Nothing Then
            Dim Str1 As String = "用户名: " & User.Name & "  用户组别: " & user.group & "  系统发布日期: " & Publishdate \'& "  当前时间: " & Date.now \'当前时间没有意义
            StatusBar.Message1 = Str1
        Else
            Dim Str1 As String = "用户名: " & User.Name & "  系统发布日期: " & Publishdate & "  当前时间: " & Date.now
            StatusBar.Message1 = Str1
        End If
    End If
    If Publishdate < dt1 Then
        If user.group IsNot Nothing Then
            Dim Str1 As String = "用户名: " & User.Name & "  用户组别: " & user.group & "  系统发布日期: " & Publishdate & "  已有最新版本, 发布日期为 " & dt1 & ", 请适时重新登录系统。"
            StatusBar.Message1 = Str1
        Else
            Dim Str1 As String = "用户名: " & User.Name & "  系统发布日期: " & Publishdate & "  已有最新版本, 发布日期为 " & dt1 & ", 请适时重新登录系统。"
            StatusBar.Message1 = Str1
        End If
    End If
End If
[此贴子已经被作者于2024/5/11 10:44:10编辑过]

--  作者:有点蓝
--  发布时间:2024/5/11 10:46:00
--  
意思是StatusBar没有显示红色的文字?

msgbox(Str1 ) 能不能显示完整的内容?

--  作者:edisontsui
--  发布时间:2024/5/11 12:46:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:图片0511-01.rar

请看上图。当6楼所示的<提示1>出现时,左下角的显示内容就是正确的;但是当我点击<提示1>的《确定》按钮后,这个提示框会消失,但同时左下角的红色部分内容也会消失掉。

--  作者:有点蓝
--  发布时间:2024/5/11 14:02:00
--  
建议使用StatusBar.Message2

或者试试

StatusBar.DefaultMessage = Str1
StatusBar.Message1 = Str1