Foxtable(狐表)用户栏目专家坐堂 → 删除时机的疑问


  共有2395人关注过本帖平板打印复制链接

主题:删除时机的疑问

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


加好友 发短信
等级:童狐 帖子:292 积分:2488 威望:0 精华:0 注册:2011/11/4 17:32:00
删除时机的疑问  发帖心情 Post By:2014/9/1 10:28:00 [只看该作者]

在删除一表单数据时想同步将数据从事务提醒中删除,同时将删除表单的编号回收到编号记录表中;删除动作都是全部加入到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中是正确的吗?谢谢!


 回到顶部