Foxtable(狐表)用户栏目专家坐堂 → 每新增1行时会同时(时间点完全一致)产生2个行键值


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

主题:每新增1行时会同时(时间点完全一致)产生2个行键值

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


加好友 发短信
等级:幼狐 帖子:103 积分:1228 威望:0 精华:0 注册:2017/5/16 22:42:00
每新增1行时会同时(时间点完全一致)产生2个行键值  发帖心情 Post By:2024/1/12 16:13:00 [只看该作者]

各位老师好!最近我在操作日志中发现,关联表的子表每新增1行时会同时(时间点完全一致)产生2个行键值,其中较大的行键值记录的信息是正确的,较小的行键值记录的信息是错误的。如果不是关联表的子表就不会出现这种情况,请问该如何消除这种情况?

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

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

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/1/12 16:29:00 [只看该作者]

用了什么代码?

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


加好友 发短信
等级:幼狐 帖子:103 积分:1228 威望:0 精华:0 注册:2017/5/16 22:42:00
  发帖心情 Post By:2024/1/12 16:37:00 [只看该作者]

新增行的代码:
        Tables("物流计划.运输单副表").Focus
        If Tables("物流计划.运输单副表").AllowAddNew = True Then 
            Syscmd.Row.AddNew()
            Tables("物流计划.运输单副表").Save '每次增加行后,自动保存表,使得自动增量列获得真实的值
        Else
            MessageBox.Show("您没有该权限,请联系系统管理员!", "提示")
        End If

操作日志代码:全局表事件 DataColChanged

Try
    If e.DataTable.Name <> "操作日志" Then '”数据操作日志“是表名
            If e.DataCol.Expression = "" Then
                If e.NewValue <> e.OldValue Then 
                    Dim r As Row = Tables("操作日志").AddNew()
                    r("操作") = "修改"
                    r("工作表") = e.DataTable.Name
                    r("列名称") = e.DataCol.Name
                    r("行键值") = e.DataRow("_Identify")
                    r("修改人") = Vars("用户部门") & "." & Vars("用户姓名")
                    r("修改时间") = Date.Now
                    r("修改记录") = "[" & e.OldValue & "]→[" & e.NewValue & "]"
                End If
            End If
        End If
Catch ex As Exception
    StatusBar.Message1 = "Unknown Error"
End Try
[此贴子已经被作者于2024/1/12 16:37:48编辑过]

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


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/1/12 17:03:00 [只看该作者]

新增行的代码改为:
        Tables("物流计划.运输单副表").Focus
        If Tables("物流计划.运输单副表").AllowAddNew = True Then 
SystemReady = False
            dim r as row = Tables("物流计划.运输单副表").addnew
            r.Save '每次增加行后,自动保存表,使得自动增量列获得真实的值
SystemReady = true
        Else
            MessageBox.Show("您没有该权限,请联系系统管理员!", "提示")
        End If

原因是使用关联表新增,新增后会给关联列赋值,就会马上触发datacolchanged事件,而这时还没有保存。所以_Identify还不是真实的值。如果在子表新增就不会有这种问题了
[此贴子已经被作者于2024/1/12 17:24:48编辑过]

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


加好友 发短信
等级:幼狐 帖子:103 积分:1228 威望:0 精华:0 注册:2017/5/16 22:42:00
  发帖心情 Post By:2024/1/12 17:14:00 [只看该作者]

感谢老师!

 回到顶部