La Web del Programador: Comunidad de Programadores
 
    Pregunta:  363 - MANEJO DE TRANSAC. DE SQL SERVER
Autor:  David Rojas Avila
Tengo una Base de Datos en SQL Server 6.5 con 3 Tablas. En una de ellas estoy ejecuto la Transacción Insert y me indica el siguiente Error:
40088, No Open Cursor or Cursor Closed.
En la tabla se alcanza a insertar un registro y luego aparece este error.
A quien haya solucionado este error, ruego me conteste

  Respuesta:  Patricio Araya Castro
Dado que la inserción se realiza una solución parcial es colocarla dentro de un controlador del error:

Private Sub Command1_Click()

on error goto Error1:

TUS SENTENCIAS DE INSERCION

Error1:
msgbox "Datos Ingresados Correctamente"

End Sub

Aun cuando ocurra el error de cursor el sistema seguirá funcionando.

  Respuesta:  Patricio Araya Castro
Otra Solución más limpia:

Private Sub Command1_Click()

'escribes tu sentencia SQL en una variable String, algo parecido a lo que sigue

SQL = "INSERT INTO TuTabla VALUES ....etc"
msrdc1.SQL = SQL
msrdc1.Connection.Execute SQL

End Sub

  Respuesta:  Sergio Mina
Lo que yo ago antes de realizar una transaccion es que el cursor lo pongo de lado del cliente, por que igual me envia el error que tu indicas, pero solo cuando hago un select, no estaria de mas que en tu variable de conexion.cursorlocation= client. Intentalo..espero que resulte.

  Respuesta:  Fernando Berenguer Doméne
Cuando se lanza una consulta SQL, a través de ODBC, ya sea de consulta o de acción, una vez terminada la consulta tienes que liberarla con SQLFreeStatement, (si no recuerdo mal), de lo contrario, aunque lo haya hecho todo bien y haya terminado bien, te da el error de cursor invalido.

De todos modos buscaré el ejemplo exacto y te lo mandaré.

Pruébalo.  Espero tu respuesta.