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


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

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

帅哥哟,离线,有人找我吗?
蓝色海洋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楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/11 15:07:00 [只看该作者]

 肯定是你的【项目事件】有问题。逻辑上肯定有问题。你可以尝试把代码都删除再测试。


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


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

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

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


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

初步测试 一下,没有问题

可视化授权带放在哪个事件?完整代码贴出来

AfterOpenProject事件完整代码贴出来看看

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


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/26 9:11:00 [只看该作者]

1、你尝试把LoadUserSetting事件的代码删除;

 

2、AfterOpenProject这样写

 


If Syscmd.Project.Update(True, True) = False Then '如果没有升级
    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
End If

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
蓝色海洋2
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | 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、管理员重新在授权表中限制用户看到这个表,用户就看不到了,所以问题还是没有解决。请老师再指导一下。


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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/6/28 22:09:00 [只看该作者]

LoadUserSetting事件,如果删除,和不报错是么?

 

你LoadUserSetting执行时,判断一下表名

 

If Tables.Contains(dr("表名")) Then

    '原本的权限设置代码

End If


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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/2 14:01:00 [只看该作者]

你在设置表权限的时候,判断一下就好了啊,看8楼代码。

 回到顶部
总数 14 1 2 下一页