以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]关于表A修改事项记录到表B的问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=152948) |
|
-- 作者:忆似水流年 -- 发布时间:2020/7/27 9:35:00 -- [求助]关于表A修改事项记录到表B的问题 表A的字段是 身份证,姓名,单位,学历,电话,年薪 现象想表A有变动的时候,在表B一次记录 修改者,修改时间,身份证,姓名,被修改字段,原值,限值 身份证,姓名就是原始记录的身份证和姓名,如果一条记录多个字段被修改就分开记录,请问下这个可以实现么 ![]() 先谢谢啦 |
|
-- 作者:有点蓝 -- 发布时间:2020/7/27 9:40:00 -- 参考:http://www.foxtable.com/webhelp/topics/1453.htm |
|
-- 作者:忆似水流年 -- 发布时间:2020/7/27 10:24:00 -- 蓝大好 我看了文档举例 但那个貌似需要记录的列都是一一对应的 但我想有下面这个效果,一条记录修改保存后,所有被修改的字段是纵向记录的,这里面还涉及到一个原值转字符型的问题 求教下这个怎么写 谢谢您啦
|
|
-- 作者:有点蓝 -- 发布时间:2020/7/27 10:25:00 -- find改为select获取所有数据即可:http://www.foxtable.com/webhelp/topics/0400.htm |
|
-- 作者:忆似水流年 -- 发布时间: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 |
|
-- 作者:有点蓝 -- 发布时间:2020/7/27 13:37:00 -- 麻烦以后发帖贴代码直接贴即可,不要使用代码模式添加什么乱七八糟的序号,增加了复制修改的麻烦
|
|
-- 作者:忆似水流年 -- 发布时间:2020/7/27 14:36:00 -- 收到 谢谢蓝大 这边还有最后一个问题 假设打开表的时候 单元格值是 20 中间修改该单元格三次 21、22、23后保存 请问可以原值记录20 现值记录23 ,忽略中间输错的21和22么
|
|
-- 作者:有点蓝 -- 发布时间: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
|
|
-- 作者:忆似水流年 -- 发布时间: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编辑过]
|
|
-- 作者:有点蓝 -- 发布时间: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
|