易表在线答疑技术与交流用户社区 → 网络应用中如何知道哪些用户更改了数据


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

主题:网络应用中如何知道哪些用户更改了数据

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


加好友 发短信
等级:论坛游民 帖子:95 积分:398 威望:0 精华:0 注册:2010/9/15 12:10:00
网络应用中如何知道哪些用户更改了数据  发帖心情 Post By:2012/12/30 13:11:00 [只看该作者]

易表应用到网络,多人操作,如何即时知道是那些用户更改了数据,比如进行了增加行、删除行、修改单元格内容等,烦请高手赐教。

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


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2012/12/30 15:07:00 [只看该作者]

试试函数?editlog

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


加好友 发短信
等级:论坛游民 帖子:95 积分:398 威望:0 精华:0 注册:2010/9/15 12:10:00
  发帖心情 Post By:2012/12/30 17:17:00 [只看该作者]

谢谢wjq1072老师!该函数只能知道哪个用户什么时间修改了某行记录,无法区分出增加了哪些记录、删除了哪些记录,更无法区分修改了哪一列哪一个单元格的记录。

目前,我采取了以下折衷的办法:

1、收回操作用户“删除行”及“删除隐藏行”的权限,并在系统中说明:如果误增加了记录并已存盘,则清除该行的内容,保留空行,下次进入系统时通过预处理公式清除空行。如果确实需要删除某行数据,则电告管理员审核并由管理员删除。这一折衷方案可防止操作用户删除了行而管理员却不知道情况。

2、在系统中建立一个原始数据表的备份表,并在原始数据表中增加一列,写入比对公式,如果该行数据在备份表中不存在,则比对列显示为“用户新增数据”。备份表操作用户不可见。这一折衷方案,可以让管理员随时知道用户增加了哪些数据。

3、在备份表的一些关键列之后分别增加判断列,设为逻辑型,写入公式,当用户对原始数据表的某单元格数据进行了修改时,可以通过判断列知道哪些原始数据发生了变化。

上述设计的缺点是增加了系统负荷。

 

 

[此贴子已经被作者于2012-12-30 17:18:25编辑过]

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


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2012/12/30 20:48:00 [只看该作者]

用户删除列怎么办?删除表怎么办?

参考??

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:8899.egd


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


加好友 发短信
等级:论坛游民 帖子:95 积分:398 威望:0 精华:0 注册:2010/9/15 12:10:00
  发帖心情 Post By:2012/12/30 22:05:00 [只看该作者]

谢谢wjq1072老师!没想到还可以这样弄,开眼界了!先下载学习,不懂的地方再请求赐教。
[此贴子已经被作者于2012-12-30 22:05:02编辑过]

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


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2012/12/30 22:40:00 [只看该作者]

也可以简单一些!

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:8899.egd


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


加好友 发短信
等级:论坛游民 帖子:95 积分:398 威望:0 精华:0 注册:2010/9/15 12:10:00
  发帖心情 Post By:2012/12/30 23:18:00 [只看该作者]

还是第一个方案符合我的意图,不过......

If([%A%]=[%B%],ClearGrid("辅助"),Eval("AddRow(""用户更改备份"",""编号,"+Substitute(ListFor("辅助","列名称",1),"|",",")+",记录"",[编号],["+Substitute(ListFor("辅助","列名称",1),"|","],[")+"],[记录])") And ClearGrid("辅助"))

这一部分太复杂了,看得头疼!如果方便,能否分段解读,诚表谢意!

 

按我现有水平理解,似乎[%A%]永远是等于[%B%]的(不解之处,见笑了)。

另外,Eval("AddRow(""用户更改备份"",""编号,"+Substitute(ListFor("辅助","列名称",1),"|",",")+",记录"",[编号],["+Substitute(ListFor("辅助","列名称",1),"|","],[")+"],[记录])") ,这一段......惭愧!

[此贴子已经被作者于2012-12-30 23:30:25编辑过]

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


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2012/12/31 9:56:00 [只看该作者]

1、%A%是一个表达式变量,是所在行的“记录”值,是随着你的操作变化而变化的;

2、%B%是由行预处理公式赋值的,是所在行“记录”的初始值,是不随着你的操作变化而变化的;

3、所以就出现了二种情况:所在行的“记录”值不变,%A%=%B%;所在行的“记录”值变化了,%A%<>%B%。

4、当%A%<>%B%时,公式的结果就是在“用户更改备份”增加一行。

5、增加的内容就是使用“辅助表”中“列名称”来表示。

6、“辅助表”中“列名称”是有“主表”各列的操作公式得到的。

7、关于Eval表达式的用法,可以参考论坛相关贴子。

再参考:

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:备份用户修改.egd

[此贴子已经被作者于2013-1-2 18:27:31编辑过]

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


加好友 发短信
等级:论坛游民 帖子:95 积分:398 威望:0 精华:0 注册:2010/9/15 12:10:00
  发帖心情 Post By:2013/1/2 13:29:00 [只看该作者]

非常感谢wjq1072老师,辛苦您了。关于这方面的内容,论坛中好象还没有,建议置顶!
[此贴子已经被作者于2013-1-2 13:31:00编辑过]

 回到顶部