以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]事务报错 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=157792) |
-- 作者:奶粉大王 -- 发布时间:2020/10/29 13:39:00 -- [求助]事务报错 --------------------------- 错误 --------------------------- 如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务。命令的 Transaction 属性尚未初始化。 --------------------------- 确定 --------------------------- 请问这个一般是什么问题导致
|
-- 作者:有点蓝 -- 发布时间:2020/10/29 14:03:00 -- 写了什么代码? |
-- 作者:fubblyc -- 发布时间:2021/3/15 20:28:00 -- 我也遇到这个问题: cmd.CommandText ="selec t * from record where book_id= " & dr("book_id") " dtsk = cmd.ExecuteReader(True) If dtsk.DataRows.count > 0 Then For Each drsk As DataRow In dtsk.DataRows drsk("agent_user_name") = dr("agent_user_name") drsk("agent_user_no") = dr("agent_user_no") drsk("agent_user_dept_id") = dr("agent_user_dept_id") drsk("agent_user_dept_no") = dr("agent_user_dept_no") \'drsk.save() Next dtsk.Save() End If |
-- 作者:有点蓝 -- 发布时间:2021/3/15 20:36:00 -- 贴出完整代码 |
-- 作者:fubblyc -- 发布时间:2021/3/15 20:48:00 -- 谢谢有点蓝老师,麻烦帮忙看下: 以下内容是专门发给有点蓝浏览 |
-- 作者:有点蓝 -- 发布时间:2021/3/15 21:13:00 -- 1、开启了事务,那么在任何一个Return返回前都必须提交或者回顾事务 cmd.BeginTransaction() \'开启事务 cmd.CommandText ="select * from enter_tran where tran_code = \'" & Vars("Flow_PrimaryID") & "\' and sts = 0" dt = cmd.ExecuteReader(True) If dt.DataRows.count > 0 Then Dim dr As DataRow = dt.DataRows(0) _code = dr("tran_code") If dr("state") = "2" Then MessageBox.Show("移交单已审批", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error) 这里必须加上提交或者回顾事务的代码,下面其它代码的Return也一样 Return 2、代码调用的其它函数如果有使用sqlCommand的也必须加入到这个事务中,否则可能会出现脏数据甚至死锁。
|
-- 作者:fubblyc -- 发布时间:2021/3/16 8:56:00 -- 有点蓝老师, |
-- 作者:有点蓝 -- 发布时间:2021/3/16 9:14:00 -- 6楼2个问题解决了没有,解决了再测试是否还有问题。 这个表有主键吗?是不是视图来的?有没有什么触发器? 这段代码单独放到命令窗口测试有没有问题?
[此贴子已经被作者于2021/3/16 9:14:49编辑过]
|