--
下面蓝色部份是直接写在保存前的事件代码中可以执行,但就是遇到异常错误后多个update语句可以只更新了一个,没有事务的功能,有些数据可能会丢失,更新就不准确了。如果不用蓝色的,而用红色的调用上面1楼中的函数来执行,实现事务的功能就出现那个错误的提示了。
try
\'---更新累计数量
cmd.CommandText = "Update {生产物料明细} Set 已领用量 = 已领用量 + " & V & " where " & flt
cmd.ExecuteNonQuery()
\'---更新库存表数量
If edr.IsNull("工序号") Then
flt2 = "仓库 = \'" & pr("仓库") & "\' and 产品编码 = \'" & edr("产品编码") & "\'"
Else
flt2 = "仓库 = \'" & pr("仓库") & "\' and 产品编码 = \'" & edr("产品编码") & "\' And 工序号 = " & edr("工序号")
End If
cmd.CommandText = "Update {库存表} Set 合格数量 = 合格数量 - " & V & " where " & flt2
cmd.ExecuteNonQuery()
Catch ex As Exception
msgbox(ex.tostring) \'返回错误信息
e.Cancel = True
End Try
Dim SQLLIST As New List(OF String)
\'---更新累计数量
str = "Update {生产物料明细} Set 已领用量 = 已领用量 + " & V & " where " & flt
SQLLIST.Add(str)
\'---更新库存表数量
If edr.IsNull("工序号") Then
flt2 = "仓库 = \'" & pr("仓库") & "\' and 产品编码 = \'" & edr("产品编码") & "\'"
Else
flt2 = "仓库 = \'" & pr("仓库") & "\' and 产品编码 = \'" & edr("产品编码") & "\' And 工序号 = " & edr("工序号")
End If
str = "Update {库存表} Set 合格数量 = 合格数量 - " & V & " where " & flt2
SQLLIST.Add(str)
If Functions.Execute("tp_SQL",SQLLIST,flt,flt2,V) = "NG" Then
e.Cancel = True
End If