Foxtable(狐表)用户栏目专家坐堂 → remove列后用代码不能写入数据问题


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

主题:remove列后用代码不能写入数据问题

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


加好友 发短信
等级:小狐 帖子:318 积分:2691 威望:0 精华:0 注册:2018/2/3 10:48:00
remove列后用代码不能写入数据问题  发帖心情 Post By:2022/4/12 22:43:00 [只看该作者]

帮助里关于remove列有一句:
虽然这些列已经从Table中移除,用户无法编辑和查看其内容,但是仍然可以通过代码或表达式使用或设置这些列的内容。

我在项目AfterOpenProject事件中设置了部分用户组移除三列,全局表事件DataRowAdding中这三列设置如下:
Select Case e.DataTable.Name
    Case "工程部考勤表","项目预算","办公采购"
        e.DataRow("创建者") = User.Name
        e.DataRow("创建日期") = Date.Now
        e.DataRow("最后修改") = User.Name & " " & Date.Now
End Select

结果发现,这些用户组增加了行后,后台数据库这三列都不会按代码写入内容。

是我设置有问题,还是达到这目的的三列确实不能移除,只能隐藏?

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


加好友 发短信
等级:超级版主 帖子:110663 积分:563229 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/12 22:52:00 [只看该作者]

我测试没有问题。有没有开启全局表事件?http://www.foxtable.com/webhelp/topics/0671.htm

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


加好友 发短信
等级:小狐 帖子:318 积分:2691 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2022/4/12 23:01:00 [只看该作者]

开启了的。不过刚试了才知道,不光是移除了这三列的用户组,没有移除这三列的用户组也不写入内容,但用开发者身份登录的就一切正常,增加行或是AfterEdit后,[最后修改]列都会正确写入内容。

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


加好友 发短信
等级:小狐 帖子:318 积分:2691 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2022/4/12 23:08:00 [只看该作者]

我开启是在项目Initialize里如下代码,没有问题吧,我一直用开发者身份,那里一切都正常。

For Each dt As DataTable In DataTables
    dt.GlobalHandler.DataRowDeleting = True
    dt.GlobalHandler.AfterEdit = True
    dt.GlobalHandler.DataRowAdding = True
    dt.GlobalHandler.BeforeSelChange = True
    dt.GlobalHandler.PrepareEdit = True
    dt.GlobalHandler.BeforeDeleteDataRow = True
    dt.GlobalHandler.DataRowDeleted = True
Next

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


加好友 发短信
等级:超级版主 帖子:110663 积分:563229 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/12 23:22:00 [只看该作者]

普通用户登录是不是使用的动态加载?在加载后重新设置GlobalHandler

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


加好友 发短信
等级:小狐 帖子:318 积分:2691 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2022/4/12 23:35:00 [只看该作者]

是的,登录是不加载表与数据的,打开这个表才根据权限加载。那在哪里重新设置?每个打开表菜单项里都要加上这个?
[此贴子已经被作者于2022/4/12 23:35:33编辑过]

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


加好友 发短信
等级:小狐 帖子:318 积分:2691 威望:0 精华:0 注册:2018/2/3 10:48:00
  发帖心情 Post By:2022/4/13 0:39:00 [只看该作者]

我在CurrentTableChanged里将BeforeLoadOuterTable里未加载的表统一设置好,可以了,但效率跟取消BeforeLoadOuterTable的加载条件,全部都加载空表,哪个效率更好些?


CurrentTableChanged:
Select Case CurrentTable.DataTable.Name
Case "员工考勤表","项目预算","",""
    CurrentTable.DataTable.GlobalHandler.PrepareEdit = True
    CurrentTable.DataTable.GlobalHandler.AfterEdit = True
    CurrentTable.DataTable.GlobalHandler.DataRowAdding = True
    CurrentTable.DataTable.GlobalHandler.BeforeDeleteDataRow = True
    CurrentTable.DataTable.GlobalHandler.DataRowDeleting = True
    CurrentTable.DataTable.GlobalHandler.DataRowDeleted = True
End Select

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


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

设置GlobalHandler和是否加载空表没有什么关系

 回到顶部