以文本方式查看主题

-  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
--  
有点蓝老师,


图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20210316085554.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2021/3/16 9:14:00
--  
6楼2个问题解决了没有,解决了再测试是否还有问题。

这个表有主键吗?是不是视图来的?有没有什么触发器?

这段代码单独放到命令窗口测试有没有问题?
[此贴子已经被作者于2021/3/16 9:14:49编辑过]