Foxtable(狐表)用户栏目专家坐堂 → [求助]关于表A修改事项记录到表B的问题


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

主题:[求助]关于表A修改事项记录到表B的问题

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


加好友 发短信
等级:幼狐 帖子:158 积分:1455 威望:0 精华:0 注册:2020/5/21 16:23:00
[求助]关于表A修改事项记录到表B的问题  发帖心情 Post By:2020/7/27 9:35:00 [只看该作者]

表A的字段是 身份证,姓名,单位,学历,电话,年薪
现象想表A有变动的时候,在表B一次记录 修改者,修改时间,身份证,姓名,被修改字段,原值,限值

身份证,姓名就是原始记录的身份证和姓名,如果一条记录多个字段被修改就分开记录,请问下这个可以实现么图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:表a.jpg
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:表b.jpg
图片点击可在新窗口打开查看

先谢谢啦

 

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


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/27 9:40:00 [只看该作者]


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


加好友 发短信
等级:幼狐 帖子:158 积分:1455 威望:0 精华:0 注册:2020/5/21 16:23:00
  发帖心情 Post By:2020/7/27 10:24:00 [只看该作者]

 蓝大好 我看了文档举例 但那个貌似需要记录的列都是一一对应的
但我想有下面这个效果,一条记录修改保存后,所有被修改的字段是纵向记录的,这里面还涉及到一个原值转字符型的问题 求教下这个怎么写 谢谢您啦

图片点击可在新窗口打开查看此主题相关图片如下:记录效果.jpg
图片点击可在新窗口打开查看


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


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/27 10:25:00 [只看该作者]

find改为select获取所有数据即可:http://www.foxtable.com/webhelp/topics/0400.htm

 回到顶部
帅哥哟,离线,有人找我吗?
忆似水流年
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:158 积分:1455 威望:0 精华:0 注册:2020/5/21 16:23:00
  发帖心情 Post By:2020/7/27 12:19:00 [只看该作者]

 不好意思啊蓝大 我水平太菜 试着写了下 现在遇到的问题
1.没有等保存就记录了。想在保存后才记录修改内容。
2.不是一条条记录的,直接全改了
3.表B,后面3列怎么写,没看懂文档图片点击可在新窗口打开查看

还请蓝大帮一下 谢谢您啦


以下内容为程序代码:

1 Select Case e.DataCol.Name
2 Case "身份证","姓名","单位","学历","电话","年薪"
3 DataTables("表B").ReplaceFor("修改者", user.Name, True)
4 DataTables("表B").ReplaceFor("修改时间", Date.Now,True)
5 DataTables("表B").ReplaceFor("身份证", e.NewValue,True)
6 DataTables("表B").ReplaceFor("姓名", e.NewValue,True)
7 End Select



图片点击可在新窗口打开查看此主题相关图片如下:目前效果图.jpg
图片点击可在新窗口打开查看


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


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/27 13:37:00 [只看该作者]

麻烦以后发帖贴代码直接贴即可,不要使用代码模式添加什么乱七八糟的序号,增加了复制修改的麻烦

Select Case e.DataCol.Name
    Case "身份证","姓名","单位","学历","电话","年薪"
        Dim dr As DataRow = DataTables("表B").AddNew
        dr("修改者") = user.Name
        dr("修改时间") = Date.Now
        dr("身份证") = e.DataRow("身份证")
        dr("姓名") = e.DataRow("姓名")
        dr("被修改字段") = e.DataCol.name
        dr("原值") = e.oldvalue
        dr("现值") = e.newvalue
End Select

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


加好友 发短信
等级:幼狐 帖子:158 积分:1455 威望:0 精华:0 注册:2020/5/21 16:23:00
  发帖心情 Post By:2020/7/27 14:36:00 [只看该作者]

收到 谢谢蓝大 这边还有最后一个问题
假设打开表的时候 单元格值是 20
中间修改该单元格三次 21、22、23后保存
请问可以原值记录20 现值记录23 ,忽略中间输错的21和22么

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


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/27 14:50:00 [只看该作者]

Select Case e.DataCol.Name
    Case "身份证","姓名","单位","学历","电话","年薪"
        Dim dr As DataRow =DataTables("表B").Find("修改者='" & user.Name & "' and 身份证='" & e.DataRow("身份证") & "'")
        If dr Is Nothing Then
            dr= DataTables("表B").AddNew
            dr("修改者") = user.Name
            dr("修改时间") = Date.Now
            dr("身份证") = e.DataRow("身份证")
            dr("姓名") = e.DataRow("姓名")
            dr("原值") = e.oldvalue
        End If
        dr("被修改字段") = e.DataCol.name
        dr("现值") = e.newvalue
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
忆似水流年
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:158 积分:1455 威望:0 精华:0 注册:2020/5/21 16:23:00
  发帖心情 Post By:2020/7/28 1:11:00 [只看该作者]

蓝大好!我试了好久,这样写的话,修改同一条记录的不同字段在表B里只会有一条记录,估计是修改者+身份证已经有了,就不再add。

改成

Dim dr As DataRow =DataTables("B").Find("修改者='" & user.Name & "' and 修改字段='" & e.Datacol.name & "'")

这个时候当所有字段都列出后也不会再新增行了

是我之前没表达清楚,我真正想要的是在点保存前,忽略同一个单元格的修改过程只记录原值和最后的值。但点击保存后,再改就是add一行新记录了。

我想象中是不是可以在表B里增加一列已保存,add后dr("已保存") = "否",当保存过该列值就清空,这样上面的判断就变成 修改者+修改字段+已保存 都为空的时候 再add

但我不知道怎么实现保存时自动清空已保存列的值,又或者根本不需要这么复:D

谢谢您啦



[此贴子已经被作者于2020/7/28 1:25:28编辑过]

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


加好友 发短信
等级:超级版主 帖子:107754 积分:548109 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/7/28 8:50:00 [只看该作者]

代码放到datacolchanging事件
Select Case e.DataCol.Name
    Case "身份证","姓名","单位","学历","电话","年薪"
        Dim dr As DataRow
        If e.DataRow.Rowstate <> DataRowState.Unchanged
            dr = DataTables("表B").Find("修改者='" & user.Name & "' and  被修改字段='" & e.DataCol.name & "'")
        End If
        If dr Is Nothing Then
            dr= DataTables("表B").AddNew
            dr("修改者") = user.Name
            dr("修改时间") = Date.Now
            dr("身份证") = e.DataRow("身份证")
            dr("姓名") = e.DataRow("姓名")
            dr("原值") = e.oldvalue
            dr("被修改字段") = e.DataCol.name
        End If
        dr("现值") = e.newvalue
End Select

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