Sybase Ase 15多个记录集和活动事务上的错误

时间:2010-08-19 20:09:53

标签: vb6 sybase-ase

我们有很老的VB6应用程序连接到Sybase数据库。今天,通过ODBC连接到Sybase ASE 15服务器,使用Open Client 12驱动程序可以正常运行。

有一个升级到OpenClient 15驱动程序的计划,使用该版本我收到此错误:

  

运行时错误'-2147467259(80004005)'

     

事务不能有多个具有此游标类型的记录集。

     

更改游标类型,提交事务或关闭其中一个记录集。

据我所知,搜索互联网时,问题出现在游标中。

在ODBC配置管理器中的旧驱动程序中有一个性能选项卡,我们在游标中有选择方法,但是使用新驱动程序,此选项卡已经消失,我们获得的关于游标的所有内容都是常规选项卡中名为 Cursor Behavior 的部分,在那里我们选中了 Use Cursors 选项。

这是一个我可以重现问题的小代码片段。感谢所有帮助。

  Dim conObj As ADODB.Connection
  Dim objRs As ADODB.Recordset
  Dim objRs2 As ADODB.Recordset
  Set conObj = New ADODB.Connection
  conObj.ConnectionTimeout = 10
  conObj.CommandTimeout = 5
  conObj.Provider = "MSDASQL"
  conObj.Open "DSN=cdbur32;UID=***;PWD=***;Database=dbsait;WSID=Test;APP=Test"
  conObj.CursorLocation = adUseClient
  conObj.BeginTrans
  Set objRs = New ADODB.Recordset
  Set objRs.ActiveConnection = conObj
  objRs.Source = "select id_estatus_aplicacion from dbo.cat_sait_estatus_aplicaciones"
  objRs.CursorType = ADODB.CursorTypeEnum.adOpenForwardOnly
  objRs.LockType = ADODB.LockTypeEnum.adLockReadOnly
  objRs.Open
  objRs.MoveNext
  Debug.Print objRs("id_estatus_aplicacion")
  Set objRs2 = New ADODB.Recordset
  Set objRs2.ActiveConnection = conObj
  objRs2.Source = "select * from dbo.cat_sait_estatus_aplicaciones"
  objRs2.CursorType = ADODB.CursorTypeEnum.adOpenForwardOnly
  objRs2.LockType = ADODB.LockTypeEnum.adLockReadOnly
  objRs2.Open 'error here
  objRs.MoveNext
  Debug.Print objRs("id_estatus_aplicacion")
  conObj.RollbackTrans
  objRs.Close
  objRs2.Close
  Set conObj = Nothing

2 个答案:

答案 0 :(得分:0)

更换行

objRs.CursorType = ADODB.CursorTypeEnum.adOpenForwardOnly

objRs2.CursorType = ADODB.CursorTypeEnum.adOpenForwardOnly

帮助?

答案 1 :(得分:0)

最后,Sybase人员向我们发送了一个新的驱动程序并修复了问题