Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Transactions en VB.NET

3 views
Skip to first unread message

Martin

unread,
Nov 6, 2009, 2:44:55 PM11/6/09
to
Hola grupo

Estoy haciendo una aplicación con VB.NET con una DB Oracle y me acabo de encontrar con el siguiente problema al utilizar transacciones al momento de actualizar la DB
Supongamos que el usuario realiza modificaciones sobre dos tablas (dt1 y dt2) agregando, modificando y eliminando registros
Al momento de hacer clic sobre un botón para actualizar los datos (ver el siguiente codigo) se produce una excepción al actualizar la 2da tabla.
 
El problema que tengo es que tr.Rollback() no restablece la propiedad RowState de cada fila de la primer tabla cuya actualización fue exitosa y ahora todas sus filas tiene la propiedad RowState en Unchanged.
Con lo cual ahora tengo una diferencia de versiones de los datos entre la aplicación la base de datos. Buscando en internet encontré varias respuestas a este problema pero ninguna válida.Por EJ.
 
usar dt1.RejectChange() lo cual no funciona porque el médoto Update() ya cambió el estado de todas las fijas a Unchanged
 
otra respuesta que encontré es usar SetAdded() o SetModified() para restablecer a mano las propiedades de cada fila, lo cual es imposible ya que no tengo manera de saber cuales fueron las fijas que fueron modificadas, agregadas o eliminadas ya que todas tienen el valor Unchanged
 
 
¿Qué es lo que se debe hacer en estos casos?
 
Saludos y gracias
 
Martín
 
 
 
'****CODIGO DE EJEMPLO*****

Dim tr As OracleTransaction = cn.BeginTransaction

Try

    da1.Update(dt1)
    da2.Update(dt2)    'Esta linea provoca una excepción al actualizar
    tr.Commit()

Catch ex As Exception

    tr.Rollback()

End Try
0 new messages