Foxtable(狐表)用户栏目专家坐堂 → [原创]客户端自动升级,不存在新增的表


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

主题:[原创]客户端自动升级,不存在新增的表

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


加好友 发短信
等级:幼狐 帖子:93 积分:1503 威望:0 精华:0 注册:2015/11/18 22:18:00
[原创]客户端自动升级,不存在新增的表  发帖心情 Post By:2017/6/11 8:08:00 [显示全部帖子]

1、用户使用已发布的程序可以正常工作
2、已发布的程序每次启动用ftp自动升级
3、开发者新增一个外部表,用户启动程序时提示不存在这个表,启动失败
4、用户使用管理员账号才能正常升级和登录
5、退出程序再使用用户账号就可以正常登陆了
6、请问不使用管理员帐号为什么不能正常升级问题出在哪里?

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


加好友 发短信
等级:幼狐 帖子:93 积分:1503 威望:0 精华:0 注册:2015/11/18 22:18:00
  发帖心情 Post By:2017/6/17 8:15:00 [显示全部帖子]

项目有30个外部表,其中有一个可视化授权表,是不是要控制可视化授权表最后一个加载,怎样控制?

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


加好友 发短信
等级:幼狐 帖子:93 积分:1503 威望:0 精华:0 注册:2015/11/18 22:18:00
  发帖心情 Post By:2017/6/25 20:36:00 [显示全部帖子]

loadusersetting事件代码:
For Each t As Table In Tables
    t.Visible = True
    t.AllowEdit = True
    For Each c As Col In t.Cols
        c.Visible = True
        c.AllowEdit = True
    Next
Next
Tables("授权表").Visible = (User.Type <> UserTypeEnum.User )
If User.Type = UserTypeEnum.User Then
    For Each dr As DataRow In DataTables("授权表").Select("用户名 = '" & User.Name & "'" )
        If dr.IsNull("列名") Then
            Tables(dr("表名")).Visible = Not dr("不可见")
            Tables(dr("表名")).AllowEdit = Not dr("不可编辑")
        Else
            Tables(dr("表名")).Cols(dr("列名")).Visible = Not dr("不可见")
            Tables(dr("表名")).Cols(dr("列名")).AllowEdit = Not dr("不可编辑")
        End If
    Next
End If

If User.Name = "王一军" Then
    DataTables("劳动合同").LoadFilter = ""
Else
    DataTables("劳动合同").LoadFilter = "用户 = '" & User.Name & "'"
End If
DataTables("劳动合同").Load()


afteropenproject事件代码:
Syscmd.Project.Update()
If Syscmd.Project.Update(False,False) = False Then '如果没有升级
    '原AfterOpenProject事件代码
End If

Select Case User.Name
    Case "胡冰","叶敏辉"
        Tables("劳动合同").Cols.Remove("合同编号")
        Tables("劳动合同").Cols.Remove("合同确认")
        Tables("劳动合同").Cols.Remove("a1")
        Tables("劳动合同").Cols.Remove("d6")
End Select
If User.Name <> "王一军" Then
    Tables("劳动合同").Cols.Remove("用户")
End If


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


加好友 发短信
等级:幼狐 帖子:93 积分:1503 威望:0 精华:0 注册:2015/11/18 22:18:00
  发帖心情 Post By:2017/6/28 21:51:00 [显示全部帖子]

1、按照老师1、2操作后,自动升级没有问题了,但是每个用户都可以看到所有的外部表了;

2、重新复制帮助‘可视化授权的实现’中的代码到项目事件LoadUserSetting中,限制用户只能看自己的表;

3、开发者新增一个表,没有在授权表中做限制,发布后,所有用户可以自动升级成功,并且能看到这个新增的表;

4、问题出在开发者新增一个表,并且在授权表中限制部分用户看到这个表,发布后,除管理员外的所有用户都不能自动升级,提示不存在新增表的table;

5、管理员删除授权表中限制用户看到这个表的所有行,用户就可以自动升级了,但是都能看到这个新增的表了

6、管理员重新在授权表中限制用户看到这个表,用户就看不到了,所以问题还是没有解决。请老师再指导一下。


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


加好友 发短信
等级:幼狐 帖子:93 积分:1503 威望:0 精华:0 注册:2015/11/18 22:18:00
  发帖心情 Post By:2017/7/2 11:05:00 [显示全部帖子]

多谢老师!问题已经解决。如果我的系统新增了一个“表A”,我在LoadUserSetting事件开始位置先加载表A,再卸载表A就可以了。

datatables.load("表A")

if datatables.contains("表A")  then

   datatables.unload("表A")

end if


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


加好友 发短信
等级:幼狐 帖子:93 积分:1503 威望:0 精华:0 注册:2015/11/18 22:18:00
  发帖心情 Post By:2017/7/11 5:57:00 [显示全部帖子]

        这是有点色老师在类似问题的解答:默认的升级,是先连接数据库、加载表之后,才能升级的。建议你改成自己做的升级吧,默认的升级真不好用。
        我也发现问题在这里,希望默认的升级改成先升级再连接数据库。我现在还没学会自己做升级程序,都是把发布好的程序拷贝给各用户使用。

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


加好友 发短信
等级:幼狐 帖子:93 积分:1503 威望:0 精华:0 注册:2015/11/18 22:18:00
  发帖心情 Post By:2017/7/11 6:18:00 [显示全部帖子]

有个客户端的用户给我反映,因为我经常发布系统更新, 他每次都升级,有一次升级后就可以看到所有的表,就不再选择升级了。
希望软件让升级更简单一点,发现有更新,就自动选择静默升级,不让用户确认是否升级。

 回到顶部