在删除一表单数据时想同步将数据从事务提醒中删除,同时将删除表单的编号回收到编号记录表中;删除动作都是全部加入到SQL事务集合SQLLIST中通过函数来遍历执行的,直接从sql数据库中删除,如果有一个删除不成功,全部回滚。
请教下面的代码是要写在BeforeDeleteDataRow事件中还是DataRowDeleting事件中?
(现在我是写在BeforeDeleteDataRow中,目的是先用事务删除或更新后台sql数据中的相关数据再删除当前加载表中的行,当事务执行不成功回滚时就取消删除;
若是写在DataRowDeleting事件中,当sql事务执行不成功回滚后,加载表中的行也会被删除,结果是事务提醒中没删除,编号记录也没有回收,当前表中的数据却还是被删除了造成不一致。)
Dim cmd As New SQLCommand
cmd.ConnectionName = Mydata
Dim str As String
Dim dr As DataRow
str = "Delete from 事务提醒 where 单据名称 = '" & Mtb & "' and 单据编号 = '" & e.DataRow(Idcol) & "'"
SQLLIST.Add(str)
。。。
'如果有相同编号已用标识改为未启用,没有则将删除编号新增至编号记录表中
cmd.commandText = "Select Count(*) From {编号记录} Where 编号结构 = '" & pf & "' And 表名 = '" & tbname & "' and 顺序号 = " & sx
If cmd.ExecuteScalar > 0 Then
str = "Update 编号记录 Set 已用标识 = 0 where 编号结构 = '" & pf & "' And 表名 = '" & tbname & "' and 顺序号 = " & sx
SQLLIST.Add(str)
Else
str = "Insert Into 编号记录 (表名,编号字段,编号结构,顺序号,已用标识) Values('" & tbname & "','" & cname & "','" & pf & "'," & sx & ",0)"
SQLLIST.Add(str)
End If
If Functions.Execute("tp_SQL",SQLLIST) = "NG" Then
e.cancel = True
End If
写在BeforeDeleteDataRow中是正确的吗?谢谢!