|
Problemas con las transacciones en ASP |
|
monty |
 |
16/8/2001 |
Estoy realizando un programa de la matriculaci?n de los alumnos de una universidad por Internet (se trata de mi proyecto final de carrera). Estoy empleando ASP y SQLServer 7.0 para realizarlo. Pues bien, el problema que tengo es que me da un error cuando intento lanzar varias instrucciones SQL dentro de una transacci?n. Os muestro el error y el c?digo que lo genera:
------------------------------------------------------------------------------------
[ERROR]
Microsoft OLE DB Provider for ODBC Drivers error '80004005'
No puede tener m?ltiples recordsets con este tipo de cursor (en transacciones). O cambia el tipo de cursor, realiza la transacci?n o cierra uno de los recordsets.
------------------------------------------------------------------------------------
[CODIGO]
'Conexi?n a la Base de Datos
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "DRIVER={SQL Server};SERVER=RAUL; UID=sa; DATABASE=ade"
'Recorrido de las asignaturas seleccionadas con el horario elegido
for i=LBound(selecciones) to UBound(selecciones)
selecciones_aux = Split(selecciones(i),"$",-1,1)
asignatura = selecciones_aux(0)
horario = selecciones_aux(1)
'Construimos la consulta para saber si existen plazas libres
SQLQueryUser = "SELECT plazas_libres FROM horarios " _
& "WHERE cod_horario = '" & horario & "' AND cod_asig = '" & asignatura & "'"
'Ejecutamos la consulta
Set RSUser = OBJdbConnection.Execute(SQLQueryUser)
'Si existen plazas libres "actualizamos la base de datos"
if RSUser.Fields(0) <> 0 then
'Actualizamos las plazas libres e insertamos la matricula
SQLQueryUser = "UPDATE horarios SET plazas_libres = plazas_libres - 1 "_
& "WHERE cod_horario = '" & horario & "' AND cod_asig = '" & asignatura & "'"_
& " INSERT INTO matriculas(dni,cod_asig,cod_horario) "_
& "VALUES ('" & dni & "','" & asignatura & "','" & horario & "')"
'Ejecutamos la consulta
OBJdbConnection.Execute(SQLQueryUser)
'Si no existen plazas libres ...
else
'Deshacemos los posibles cambios efectuados en la base de datos
OBJdbConnection.RollBackTrans
'Redirigimos a una p?gina de error
Response.Redirect "../errores/no_existen_plazas.asp?dni=" & dni & _
"&selecciones=" & selec_actuales & _
"&no_plazas=" & selecciones(i)
Exit For
end if
next
'Si no han habido errores confirmamos la transacci?n
OBJdbConnection.CommitTrans
------------------------------------------------------------------------------------
|
|
|