Error en transaccion

javromara
03 de Diciembre del 2003
En un componente de acceso a bases de datos para un proyecto ASP se produce el siguiente error:

Transaction cannot have multiple recordsets with this cursor type. Change the cursor type, commit the transaction, or close one of the recordsets.

El código es el siguiente:
mconAdoConex.BeginTrans

Dim ArraySql() As String

ArraySql = Split(Sql, "*")

For intContador = 0 To UBound(ArraySql)
If Len(Trim(ArraySql(intContador))) > 0 Then
' mconAdoConex.BeginTrans
' Fijamos los parámetros del Command y Recuperamos el Recordset
With mcmdAdoConsulta
.CommandText = ArraySql(intContador)
.CommandTimeout = 20
.CommandType = adCmdText
Set .ActiveConnection = mconAdoConex
End With
' mrstAdoConsulta.Open mcmdAdoConsulta, , adOpenDynamic, adLockReadOnly
mrstAdoConsulta.Open mcmdAdoConsulta, , adOpenDynamic, adLockOptimistic

' mconAdoConex.CommitTrans
End If
Next intContador

mconAdoConex.CommitTrans

Alguien puede indicarme como solucionarlo.

KayKay
03 de Diciembre del 2003
Hola este problema te sucede porque cada vez que abres el recordset con esta configuración , añades una transacción nueva y la transaccion la has abierto sin nombre, te sugeriria que probaras dos cosas, las transacciones abrelas con nombres y anidalas, si una falla sus anidadas interiores falla, para abriralas con nombre haz : mconAdoConex.Execute "BEGIN TRANSACTION Nombre" , para el commit y el rollback lo mismo.

Si con esto no te funciona prueba con abrir el recordset con adOpenKeyset y no con adOpenDynamic.

Un Saludo.

Adeu.