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:
La porción de código que provoca el error es esta: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
Código:
Y ante esto mi pregunta es:[...] 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 [...]
¿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.