Hola a todos:
Tengo unos formularios que realizan inserciones en una base de datos ACCESS utilizando
transacciones.
Se trata de un proceso de inserción en varios pasos ( 1 de 3, 2 de 3, 3 de 3) de manera que cuando un usuario está en el paso 1 de 3 y envía el formulario, un ASP recibe los datos, los valida, empieza una transacción (BeginTrans) y guarda los datos en la BDD. A continuación se le muestra el formulario del paso 2 de 3. Y así sucesivamente hasta el final.
La aceptación o cancelación de la transacción se realiza al final del paso 3 de 3, en el caso de que todo haya ido bien y todos los datos recibidos sean correctos.
Hasta aquí está todo claro.
El problema aparece cuando hay
actualizaciones concurrentes .
Si mientras un usuario A está en el paso 2 de 3 (en mitad de una transacción), llega otro usuario B diferente e intenta hacer el paso 1 de 3, se produce este error:
Código:
Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
[Microsoft][Controlador ODBC Microsoft Access 97] No se pudo
actualizar; actualmente está bloqueado por el usuario <user> en
la máquina <nombre_maquina>.
/tarificadores/asistencia sanitaria/backend/modalidadesBD.asp, line 100
La porción de código que provoca el error es esta:
Código:
[...]
87 sql = "SELECT * FROM modalidades"
88 objRS.Open sql, oConn, 3, 3
89 objRS.AddNew
90 objRS("nombre") = request.form("nombre")
91 objRS("id_companyia") = request.form("idCompanyia")
92 objRS("edad_minima") = request.form("edadMinima")
[...]
99 objRS("id_cuadro") = request.form("idCuadro")
100 objRS.update
[...]
Y ante esto mi pregunta es:
¿Hay alguna forma de utilizar transacciones de manera que se puedan hacer actualizaciones de varios usuarios diferentes?
He buscado información sobre métodos del objeto Connection, pero no he encontrado nada.
¿Alguna idea?
Muchas gracias de antemano.