AS/400 - No me funciona bien una transacción

 
Vista:

No me funciona bien una transacción

Publicado por Pableras (1 intervención) el 31/08/2006 09:22:00
Hola, qué tal ???

Mi problema es simple de entender (que no de resolver , al menos para mí :-( ). Tengo una transacción, en el que entre el BeginTransaction y el Commit tengo varias operaciones a realizar. Mi problema es que va haciendo las operaciones, pero si hay un fallo no hace el rollback, es decir, que si tenía que hacer 8 operaciones y ha dado fallo la operación 3, la 1 y la 2 se han "guardado" (son inserciones en base de datos AS400 lo que hago). Lo más curioso de todo es que la línea del RollBack la lee.

El programa lo que hace, más o menos, es copiar una estructura de árbol (con 5 niveles), en una tabla.

Mi código es algo parecido a esto (lo tengo en c# dentro del Visual Studio.NET 2003):

// programa principal digamos:

........
tran=conn.BeginTransaction();
comm.Transaction=tran;

try
{
foreach(DataRow dr in SelectNiveles(5,.........).Rows)
{
niv5=InsertRow(.......,0)
foreach(DataRow dr in SelectNiveles(4,.........).Rows)
{
niv4=InsertRow(.......,niv4)
foreach(DataRow dr in SelectNiveles(3,.........).Rows)
// Así seguiría hasta llegar al nivel 1
}
}

tran.Commit();
}
catch
{
tran.RollBack();
throw Exception("..................")
}

// función SelectNiveles

utilizo el comm (general) , un DataAdapter (local) y un DataSet(local) para rellenar una tabla del DataSet.
La función devuelve la tabla del DataSet.

// función InsertRow

// Esta función devuelve el nuevo id de la fila que vamos a introducir

.......
id=comm.ExecuteScalar(); // Saca el máximo 'id' en una tabla concreta
id++;
.......
comm.ExecuteNonQuery(); // Una vez que el nuevo índice, inserto la fila.
return id;

A lo mejor he tenido algún fallo de sintaxis aquí, pero en el Visual está bien escrito todo, y la solución se genera perfectamente.

La transacción y el command son globales ( he probado a poner otros command locales y globales y nada )

Qué puede pasar ???? ... hay problemas con el ámbito de algunas variables: comm, etc ??? ...no sé....

Graciasssssssssssssssssssssssssssssss
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