0

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

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

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

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

更改游标类型、提交事务或关闭记录集之一。

据我了解在互联网上搜索,问题出在游标上。

在 ODBC 配置管理器的旧驱动程序中,有一个性能选项卡,我们在光标中有选择方法,但是对于新驱动程序,这个选项卡消失了,我们得到的关于光标的所有内容都是通用选项卡中名为Cursor Behavior的部分,在在那里我们选中了使用光标选项。

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

  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
4

2 回答 2

0

是否换行

objRs.CursorType = ADODB.CursorTypeEnum.adOpenForwardOnly

objRs2.CursorType = ADODB.CursorTypeEnum.adOpenForwardOnly

帮助?

于 2010-08-20T14:07:11.867 回答
0

最后 Sybase 的人给我们发了一个新的驱动程序并解决了这个问题

于 2012-02-01T17:01:38.440 回答