Visual Basic - Error en transacción

Life is soft - evento anual de software empresarial
 
Vista:

Error en transacción

Publicado por Jeronimo (49 intervenciones) el 02/06/2006 02:54:23
Hola, foreros!
Mi consulta es la siguiente.
En un sistema que hice para usar en red, varios usuarios (puntos de venta) pueden acceder a la base de datos (Access/ADO) y leer o escribir en ella. Mi intención es utilizar las transacciones para asegurarme que todas las operaciones se lleven a cabo o que, si hay algún problema, no se modifique la información en la base de datos. Entonces, ¿qué pasa si un usuario da la instrucción Begintrans, realiza algunos cambios en la bd y antes de Committrans, por ejemplo, se desenchufa la computadora del punto de venta (no en la cual está alojada la bd sino la del usuario que intenta modificarla) o se "cae" la red, o se "tilda" el Windows? ¿La base de datos queda bloqueada o sucede algo que impida el correcto funcionamiento para el resto de los usuarios? Cuando vuelvo a iniciar Windows y el programa, ¿se puede acceder a la bd normalmente, como si nada hubiera pasado?
Por favor, necesito ayuda!!!
Gracias!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error en transacción

Publicado por Javi RM (187 intervenciones) el 08/06/2006 16:39:56
Bueno, tu mismo lo has dicho. Todo lo que has comentado es así.
En el momento que trabajas con transacciones, no tienes que preocuparte por que caiga la red, o se produzca un error inesperado en la aplicación.
Precisamente para eso se realizan las transacciones. Para que lo entiendas, sin ser pretencioso, hasta que no validas una transacción no se "bajan" los datos a la base de datos y el resto de usuarios no ven los cambios realizados hasta ese momento.
En el caso de existir un control de errores y necesitas por integridad que al detectarse un error, se deshagan todos los cambios debes utilizar RollBackTrans.

Por otro lado, si el programa se trata de un TPV com varios usuarios conectados en red, te recomiendo, por propia experiencia, que apartes Access a un lado y estudies la posibilidad de trabajar con un gestor de base de datos de verdad como MySQL o MS SQL.
En red, Access no es muy seguro.

Espero que esta explicación te ayude en algo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en transacción

Publicado por Jeronimo (49 intervenciones) el 08/06/2006 17:29:25
Muchas gracias, Javi RM!
De verdad, me ha ayudado mucho tu explicación.
Te comento, de paso, que estoy trabajando en Access porque debo terminar unos agregados a un sistema ya hecho y no hay tiempo para cambiar a MySQL, que es lo que yo quisiera.
Por otro lado, te hago otra pregunta: ¿qué pasa si un usuario está modificando un registro pero todavía no ejecutó "CommitTrans" y otro usuario en ese momento quiere ver ese registro o, inclusive, modificarlo?
Muchas gracias nuevamente.

Jerónimo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en transacción

Publicado por javi RM (187 intervenciones) el 09/06/2006 07:56:21
Mientras que un usuario no valide la transacción el resto de usuarios no verán los cambios realizados.
Ten en cuenta que si dos usuarios están modificando el mismo registro, se guardarán las modificaciones del último commit.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en transacción

Publicado por Jeronimo (49 intervenciones) el 09/06/2006 17:27:01
Claro, pero mientras alguien hace una modificación, si ya hizo begintrans y todavía no hizo comittrans, ¿puede otro usuario ver esos registros (obviamente, sin la modificación hecha porque no se ha plasmado) o están bloqueados también para verlos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar