以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=127126)

--  作者:18523500398
--  发布时间:2018/11/6 11:54:00
--  求助。
把事务用在窗口加载的事件,代码如下
try 
Connections(_strBooks).BeginTransaction()
e.Form.BaseForm.FormBorderStyle = Windows.Forms.FormBorderStyle.None
e.Form.DisableXButton()
Dim ma As String 
Dim fo As WinForm.Form = Forms("金相BusMain")
If fo.Opened Then
Dim lvw As WinForm.ListView = Forms("金相BusMain").Controls("LV_SCXX")
Dim vr As WinForm.ListViewRow = lvw.Current \'获取ListView中选定的行
If vr Is Nothing Then \'如果不存在当前行,也就是内有选定任何一行
    Return
End If
Dim dr As DataRow = vr.tag \'获取此行对应的DataRow
e.Form.Controls("TXT_MO").Text = dr("制令单号")
e.Form.Controls("TXT_TI").text=dr("送检单号")
e.Form.Controls("TXT_PRDNAME").Text = dr("货品名称")
e.Form.Controls("TXT_DEP").text=dr("生产线")
e.Form.Controls("TXT_JLNO").text=Vars("_jxlv_jl")
Vars("_jxlv_prdno")=dr("货品编号")
End If
\'\'获得检验项目

\'\'建立表
Dim s As String = Guid.NewGuid.ToString()
Dim cmd1 As new SQLCommand
cmd1.ConnectionName=_strBooks
cmd1.CommandText="EXEC GET_PROJECT_JY \'" & _t1 & "\',\'" & Vars("_jxlv_prdno") & "\',\'" & Date.Now() & "\',\'" & s & "\'"
cmd1.ExecuteNonQuery()
\'\'MessageBox.Show("建立了表成功")

Dim q As new QueryBuilder
q.TableName = "金相临时"
q.ConnectionName=_strBooks
q.SelectString="exec GET_PROJECT_SHOW_TABLE \'" & s & "\'"
q.Build

\'\'MessageBox.Show("查询了表成功")
Dim i As Integer
i=Tables("金相临时").Cols.Count
Vars("_int_tbcount")=i
Dim j As Integer
For j=0 To i-1
    Tables("金相临时").Cols(j).RecordRowHeight=2
Next
\'\'Tables("金相临时").Cols(0).RecordRowHeight=2
Dim rgd As WinForm.RecordGrid = e.Form.Controls("RCDG_R")
Tables("金相临时").AllowEdit=True
rgd.Table=Tables("金相临时")
rgd.Build
\'\'删除表
Dim cmd4 As new SQLCommand
cmd4.ConnectionName=_strBooks
cmd4.CommandText="exec GET_PROJECT_DROP_TABLE \'" & s & "\'"
cmd4.ExecuteNonQuery()
Connections(_strBooks).Commit
catch ex As exception
Connections(_strBooks).Rollback()
MessageBox.Show(ex.Tostring())
End try


然后出错了:
如果分配给命令的连接位于本地挂起事务中,excutereader要求命令拥有事务。命令的transaction属性尚未初始化。


--  作者:有点甜
--  发布时间:2018/11/6 12:07:00
--  

执行存储过程,不能启用事务。

 


--  作者:18523500398
--  发布时间:2018/11/6 12:30:00
--  
好的吧,谢谢有点甜。
--  作者:有点甜
--  发布时间:2018/11/6 14:42:00
--  
如果要用事务,建议你把多个存储过程,合并在一个大的存储过程里面,直接执行这个存储过程。