我用VB6 + SQL SERVER 写了一个C/S系统,中间有主从表的保存用到了事务:
1、取得表的编号
2、保存主表
3、保存从表,从表有12条记录少于5个用户的时候比较正常,用户达到10个时,由于网速慢,一个用户保存可能要1秒中,如果第一个保存还没有返回,第二个用户跟上,系统则不能保存。
提示:不能启动更多的事务
如何解决???
1、取得表的编号
2、保存主表
3、保存从表,从表有12条记录少于5个用户的时候比较正常,用户达到10个时,由于网速慢,一个用户保存可能要1秒中,如果第一个保存还没有返回,第二个用户跟上,系统则不能保存。
提示:不能启动更多的事务
如何解决???
解决方案 »
- VB串口接收数据的判断
- 用ado连接access,如何将一个access文件的表全部复制到另一个access文件中?
- webbrowser控件中显示本地文件夹视图时(如:WebBrowser1.Navigate "c:\")双击文件夹会跳出新的IE显示视图,若要在原webbrowser控件中显
- 快来帮帮忙呀!!!谢谢了!!
- 关于字符串长度问题
- 大虾救命啊 ̄ ̄ ̄ ̄ ̄ ̄
- DriveListBox控件能不能不只显示硬盘的盘符,不显示光盘和软驱的盘符。
- 请问各位vb连接数据库mssql是用数据源还是用oledb(无数据源连接)?
- 地狱情人,请进!
- SQL数据库恢复时出现的问题!
- 一个关于textbox的简单问题
- 怎么在窗体上动态添加,删除控件!!!!!!!!
dim ac_tmp as new adodb.connection
ac_tmp.open ...on error goto err_proc
ac_tmp.begintrans '开始事务
'用代码实现以下功能
1、取得表的编号
2、保存主表
3、保存从表
ac_tmp.committrans '提交事务
msgbox "保存成功!",vbinformation,"提示"
exit sub'错误处理
err_proc:
ac_tmp.rollbacktrans '回滚事务
msgbox "保存失败!",48,"提示"
exit sub
end sub
Dim strNO As String
Dim strSql As String
Dim rstTmp As ADODB.Recordset
On Error GoTo ErrTrans
SaveNew = ""
gAdoCon.BeginTrans
strSql = "SELECT SN, MaxCount FROM SN WHERE SN='N'"
Set rstTmp = CreateObject("ADODB.Recordset")
With rstTmp
.CursorLocation = adUseClient
.Open strSql, gAdoCon, adOpenStatic, adLockBatchOptimistic
If .RecordCount = 0 Then
.AddNew
.Fields("SN").Value = "N"
.Fields("MaxCount").Value = 0
End If
.Fields("MaxCount").Value = .Fields("MaxCount").Value + 1
.UpdateBatch
strNO = "N" & Format(.Fields("MaxCount").Value, "0000")
End With
aRstMain.Fields("NUM").Value = strNO
aRstMain.UpdateBatch
With aRstSub
.MoveFirst
Do While Not .EOF
.Fields("NUM").Value = strNO
.MoveNext
Loop
.UpdateBatch
End With
gAdoCon.CommitTrans
SaveNew = strNO
Exit Function
ErrTrans:
gAdoCon.RollbackTrans
Err.Raise Err.Number, Err.Source, Err.Description
End Function