2010-08-19 36 views
0

我们有非常旧的VB6应用程序连接到Sybase数据库。今天,他们使用Open Client 12驱动程序通过ODBC连接到Sybase ASE 15服务器,运行良好。Sybase Ase 15多个记录集和活动事务中的错误

有上升级到15个的OpenClient驱动程序和与该版本我得到这个错误的计划:

Run-time error '-2147467259(80004005)'

Transaction cannot have multiple recordsets with this cursor type.

Change the cursor type, commit the transaction, or close one of the recordsets.

据我了解搜索互联网,问题是在光标。

在老司机的ODBC配置管理器有一个性能选项卡,我们有选择方法的光标,但随着新的驱动程序这个选项卡中消失了,所有我们得到了有关游标是在节一般标签名为光标行为,在那里我们有选项使用光标检查。

这里是一些我可以重现问题的代码片段。所有的帮助表示赞赏。

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 

回答

0

Sybase的人给我们一个新的驱动程序和固定

0

是否改变线

objRs.CursorType = ADODB.CursorTypeEnum.adOpenForwardOnly 

objRs2.CursorType = ADODB.CursorTypeEnum.adOpenForwardOnly 

帮助?

到底
+0

它并没有帮助的问题,给出了同样的错误 – 2010-08-31 21:43:00

+0

你尝试什么类型的? – Kaniu 2010-09-01 16:35:52

+0

所有的人,最后Sybase的人给我们一个新的驱动程序,并解决了这个问题 – 2010-10-12 06:03:29