Transacciones!

Hola tengo una duda. En mi aplicación quiero controlar el tema de stock cuando se produce un cierre forzado del programa; por ejemplo cuando presiono crtl + alt + supr y finalizo la aplicación. Cuando arranca de nuevo me desfasa el stock porque toma los cambios realizados antes del cierre.
¿Cómo puedo solucionar este problema?

2 respuestas

Respuesta
1
Claro te tocaría con transacciones.. si usas mysql debes crear las tablas con motor innodb y de acuerdo al lenguaje de programación iniciar las transacciones..
Uso sql server 2000 y no se como hacerlo. Podrías ayudarme con un ejemplo o en donde buscar
Respuesta
1
Supongo que estas cambiando el stock cada vez que seleccionas una salida, supongo que esto debes tenerlo dentro de un documento, lo que puedes hacer es que colocas eso dentro de una transacción, y tienes un botón de cerrar el documento, en ese botón haces le cierre de la transacción.
Hola de nuevo.
Tengo 2 pc que factura ( cleinte/servidor) necesito tener actualizado el stock. El tema esta en que si una se cuelgay sale de mi aplicación me actualiza el stock pero no tiene que ser así porque se produjo un fallo.
Si lo pongo dentro de una transacción. No hay o por lo menos no nonozco ningún evento que se genere ante un posible error no estructurado es decir un corte de luz o ctrl + alt + supr.
Se me apaga la maquina de una. Que evento se genera para que pueda detectarlo y revertir los cambios.
Yo uso transacciones pero nunca funcionan ante un error de estos.
Por favor ayúdenme que mer tiene loco este tema
Si usas un servidor de base de datos eso funciona, si usas access jamas te funcionara
Uso sql server 2000 y vb 2005
Mi ejemplo
trans as sqltransaction
trans=conex.begintransaction
conex.open
try
comando=new sqlcomand("update...........",conex)
comando.transaction=trans
comando.executenonquery
trans.commit
conex.close
catch ex as exeption
trans.rollback       ----------->  aca nunca entra x corte de luz o apagado directo
end try
algun ejemplo de como hacerlo x favor te lo agradesco de verdad ya q nadie consigue darme una verdadera respuesta. gracias
Es que si hay corte de luz jamas entra por allí, entra por allí si ocurre alguna excepción, para eso es el try... cath no para solucionar los temas de cortes de eluz, esos temas los maneja el servidor de base de datos.
Si hay un begin transaction y se va la luz hay una manera de recuperar los indices y las cosas que quedaron pendientes en els servidor de sql.
Revisa la documentación de SQL al respecto.
Si . supongo que debe existir algo pero todavía no lo puedo encontrar.
Ya he revisado miles de páginas y foros y nadie me da una respuesta clara.
Si se produce un begin transaction y no hago commit. Cada vez que consulto el stock no me lo modifica.
Ej si tenia 40 hago la rutina y cuando vuelvo sigo con 40debo hacer un commit pero si hago un commit y se da un error me guarda los datos como si estuviera todo bien
Para reparar la base de datos:
DBCC CHECKDB : ese siplemente revsa y dice si hay daños
DBCC CHECKDB ('mi_base', repair_rebuild) : revisa y repara lo que puede reparar
si hay cosas que no puede reparar, las informa en los errores y con Object ID que dice, ya lo podemos buscar en el SYSOBJECT para ver si es un indice, tabla etc..
Y entonces tratar de reprarla a mano
Con respecto a las transacciones que quedan abiertas o pendientes:
En teoría, si lo repara, osea no es que realmente haga rollback de la transacción que estaba abierta, sino que trata de poner la base en ultimo checkpoint que tenga correcto que se supone cuando se inicia una transacción guarda un checkpoint.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas