Foxtable(狐表)用户栏目专家坐堂 → [求助]事务报错


  共有2949人关注过本帖树形打印复制链接

主题:[求助]事务报错

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


加好友 发短信
等级:幼狐 帖子:167 积分:1803 威望:0 精华:0 注册:2018/1/26 16:11:00
[求助]事务报错  发帖心情 Post By:2020/10/29 13:39:00 [只看该作者]

---------------------------
错误
---------------------------
如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务。命令的 Transaction 属性尚未初始化。
---------------------------
确定   
---------------------------
请问这个一般是什么问题导致

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109503 积分:557183 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/10/29 14:03:00 [只看该作者]

写了什么代码?

 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By: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

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109503 积分:557183 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/15 20:36:00 [只看该作者]

贴出完整代码

 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2021/3/15 20:48:00 [只看该作者]

谢谢有点蓝老师,麻烦帮忙看下:


以下内容是专门发给有点蓝浏览





 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109503 积分:557183 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2021/3/16 8:56:00 [只看该作者]

有点蓝老师,


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


 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109503 积分:557183 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/3/16 9:14:00 [只看该作者]

6楼2个问题解决了没有,解决了再测试是否还有问题。

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

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

 回到顶部