终于研究了处理方案了,谢谢版主提醒的思路,不过感觉这样用户体验还是差了,看来还是需要自定义网络编号,进行数据处理更加可靠,目前不知推荐哪种网络编号方案更稳定可靠?
1、全局事件“BeforeSaveDataRow”(标志行错误,且虚拟保存)
Dim cmd0 As new SQLCommand
cmd0.ConnectionName = edt.ConnectionName
cmd0.CommandText = "Insert Into " & sqltn & "(" & cns0 & ") Values (" & vals0 & ")" & ";Select @@IDENTITY"
Dim id0 As Integer = cmd0.ExecuteScalar '插入后提取键值,便于下一步操作
Functions.Execute("表审计日志新增",sqltn,id0,"行新增",log,当前时间)
edr.SetError("_Identify",id0)
edr.Accept
2、全局事件“PrepareEdit”(查找所有标志错误行,进行批量刷新)
If er.DataRow.GetError("_Identify") <> "" '处理新增行异常
Dim ids As String = ""
Dim ids0 As String = ""
For Each r As Row In etb.Rows
If r.DataRow.GetError("_Identify") <> ""
ids0 &= "," & r("_Identify")
ids &= "," & r.DataRow.GetError("_Identify")
End If
Next
If ids <> ""
ids = ids.TrimStart(",")
ids0 = ids0.TrimStart(",")
'msgbox(ids)
End If
etb.StopRedraw
etb.DataTable.RemoveFor("_Identify in (" & ids0 & ")")
etb.DataTable.AppendLoad("_Identify in (" & ids & ")")
etb.ResumeRedraw
Return Nothing
End If