以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 关于复制数据行 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=130880) |
||||
-- 作者:裴保民 -- 发布时间:2019/2/10 12:18:00 -- 关于复制数据行 有两张表其中一张表有A,B,C,D,E字段。怎么设置当修改数据时,只要C,D,C字段任何一个字段的值发生变化时就复制一条该条记录的指定字段到另一张表中作为历史变更记录呢? |
||||
-- 作者:有点甜 -- 发布时间:2019/2/10 13:49:00 -- 参考
|
||||
-- 作者:裴保民 -- 发布时间:2019/2/11 12:14:00 -- 甜老师不是我想要的结果: 我的意思是: 在窗体中如果修改数据时,只要数据列C、D、E、F的任何一列的数据发生改变保存数据时才执行一次复制动作来记录历史数据更改记录。 那个实例是只要每一个列的数据发生变化或增加数据后就执行一次,不是我想要的结果
|
||||
-- 作者:有点甜 -- 发布时间:2019/2/11 12:58:00 -- 你在datacolchanged事件,判断列名即可,比如
select case e.datacol.name case "C", "D", "E", "F" \'代码 end select |
||||
-- 作者:裴保民 -- 发布时间:2019/2/11 13:39:00 -- select case e.datacol.name case "C", "D", "E", "F" \'代码 end select 甜老师还是不行: 假如我修改了某一行数据的C列和D列 ,他会在数据操作日志表中增加两条记录的 我的意思只要指定表不是所有表C", "D", "E", "F"任何一列发生变化时只增加一条记录就可以了,这个动作是在窗体修改数据按钮中完成的。 [此贴子已经被作者于2019/2/11 13:41:15编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2019/2/11 14:43:00 --
那你去编写beforesavedatarow事件或者在你窗口按钮那里写代码,不要编写datacolchanged事件。
|
||||
-- 作者:裴保民 -- 发布时间:2019/2/11 16:05:00 -- Select Case e.DataCol.name Case "第一列", "第二列" If e.DataTable.Name <> "数据操作日志" Then If e.DataRow.RowState = 2 Then Return Else Dim dr As DataRow = DataTables("数据操作日志").AddNew dr("ID") = e.DataRow("_Identify") dr("用户") = User.Name dr("涉及表") = e.DataTable.Name dr("涉及列") = e.DataCol.Name dr("涉及行") = e.DataRow("_Identify") dr("时间") = Date.Now dr("操作") = """" & e.OldValue & """ 改成了 """ & e.NewValue & """" Dim str As String = "" For Each c As DataCol In e.DataTable.DataCols str += c.Name & "=" & e.DataRow(c.Name) & "|" Next dr("原行数据") = str End If End If End Select 编写beforesavedatarow事件时无法保存 另外窗口修改按钮的代码怎么写呢? 修改之前的数据和之后的数据怎么取值呢?怎么判断某一个字段是否改变了? [此贴子已经被作者于2019/2/11 19:16:01编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2019/2/11 19:34:00 -- If e.DataTable.Name <> "数据操作日志" Then Dim dr As DataRow = DataTables("数据操作日志").AddNew dr("ID") = e.DataRow("_Identify") dr("用户") = User.Name dr("涉及表") = e.DataTable.Name dr("涉及行") = e.DataRow("_Identify") dr("时间") = Date.Now Dim str As String = "" For Each c As DataCol In e.DataTable.DataCols str += c.Name & "=" & e.DataRow(c.Name) & "|" Next dr("原行数据") = str End If |
||||
-- 作者:裴保民 -- 发布时间:2019/2/11 19:40:00 -- 田老师是不是写到按钮点击事件上呢?主要是单击修改数据时只要符合条件就做复制动作的 [此贴子已经被作者于2019/2/11 19:42:34编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2019/2/11 20:24:00 -- 修改之前的数据:http://www.foxtable.com/webhelp/scr/2369.htm |