以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  每新增1行时会同时(时间点完全一致)产生2个行键值  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=190037)

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

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

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

--  作者:有点蓝
--  发布时间:2024/1/12 16:29:00
--  
用了什么代码?
--  作者:otterlike
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间: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
--  发布时间:2024/1/12 17:14:00
--  
感谢老师!