access运行时错误'-2147168242(8004d00e)' 没有活动事务
提示:运行时错误'-2147168242(8004d00e)' 没有活动事务
如果把下面的事务处理语句去掉,程序能正确的执行
代码如下:
Sub save_barcode()
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim rs1 As New ADODB.Recordset
cnn.ConnectionString = "Provider=SQLOLEDB;" _
& "server=127.0.0.1;" _
& "User ID=sa;" _
& "Password =qwe;" _
& "DNS=d;" _
& "Initial Catalog =c"
cnn.Open
If MsgBox(StrConv("是否打印?", vbWide), _
vbQuestion + vbYesNo) = vbYes Then
On Error GoTo err_proc
cnn.BeginTrans
sql = "select * from Tb_BarCode_save where left(bar_code,len(bar_code)-4)='" & str_Barcode & "'"
rs.Open sql, cnn, 3, 2
If rs.RecordCount = 0 Then
rs.AddNew
rs.Fields.Item(1).Value = Trim(str_Barcode) & "0001"
rs.Fields.Item(2).Value = Trim(str_pack_number)
rs.Fields.Item(3).Value = Trim(str_tex_index)
rs.Fields.Item(4).Value = Trim(str_tex_employee_id)
rs.Fields.Item(7).Value = Trim(str_tex_order_no)
rs.Fields.Item(8).Value = str_print_time
rs.Fields.Item(9).Value = Trim(str_tex_mcode)
rs.Fields.Item(10).Value = Trim(str_tex_custums_code)
rs.Fields.Item(11).Value = Trim(str_print_man)
rs.Update
rs.Close
Else
sql = "select Max(right(bar_code,4)) from Tb_BarCode_save where left
(bar_code,len(bar_code)-4)='" & str_Barcode & "'"
rs1.Open sql, cnn, 3, 2
strID = Format(CStr(CInt(rs1(0)) + 1), "0000")
rs.AddNew
rs.Fields.Item(1).Value = Trim(str_Barcode) & strID
rs.Fields.Item(2).Value = Trim(str_pack_number)
rs.Fields.Item(3).Value = Trim(str_tex_index)
rs.Fields.Item(4).Value = Trim(str_tex_employee_id)
rs.Fields.Item(7).Value = Trim(str_tex_order_no)
rs.Fields.Item(8).Value = str_print_time
rs.Fields.Item(9).Value = Trim(str_tex_mcode)
rs.Fields.Item(10).Value = Trim(str_tex_custums_code)
rs.Fields.Item(11).Value = Trim(str_print_man)
rs.Update
rs1.Close
rs.Close
End If
cnn.CommitTrans'---------------
MsgBox "success"
Else
MsgBox "failure"
End If
err_proc:
cnn.RollbackTrans
MsgBox "出现错误保存失败!,请重新操作", 48, "提示"
Exit Sub
Set rs = Nothing
Set rs1 = Nothing
cnn.Close
Set cnn = Nothing
End Sub
你把 rs1.Close
rs.Close 去掉,再提交
你把 rs1.Close
rs.Close 去掉,VB编程习惯的问题,需要用到exit sub否则程序仍然会继续执行。
Sub save_barcode()
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim rs1 As New ADODB.Recordset
cnn.ConnectionString = "Provider=SQLOLEDB;" _
& "server=127.0.0.1;" _
& "User ID=sa;" _
& "Password =qwe;" _
& "DNS=d;" _
& "Initial Catalog =c"
cnn.Open
If MsgBox(StrConv("是否打印?", vbWide), _
vbQuestion + vbYesNo) = vbYes Then
On Error GoTo err_proc
cnn.BeginTrans
sql = "select * from Tb_BarCode_save where left(bar_code,len(bar_code)-4)='" & str_Barcode & "'"
rs.Open sql, cnn, 3, 2
If rs.RecordCount = 0 Then
rs.AddNew
rs.Fields.Item(1).Value = Trim(str_Barcode) & "0001"
rs.Fields.Item(2).Value = Trim(str_pack_number)
rs.Fields.Item(3).Value = Trim(str_tex_index)
rs.Fields.Item(4).Value = Trim(str_tex_employee_id)
rs.Fields.Item(7).Value = Trim(str_tex_order_no)
rs.Fields.Item(8).Value = str_print_time
rs.Fields.Item(9).Value = Trim(str_tex_mcode)
rs.Fields.Item(10).Value = Trim(str_tex_custums_code)
rs.Fields.Item(11).Value = Trim(str_print_man)
rs.Update
rs.Close
Else
sql = "select Max(right(bar_code,4)) from Tb_BarCode_save where left
(bar_code,len(bar_code)-4)='" & str_Barcode & "'"
rs1.Open sql, cnn, 3, 2
strID = Format(CStr(CInt(rs1(0)) + 1), "0000")
rs.AddNew