Cita:
Iniciado por edbc92
Haber, para empezar el lugar adecuado del rollback es colocarlo a la hora que te agarra la excepción, para que no uses doble try...
Y bueno un ejemplo de una transacción es esta:
Código vb:
Ver originalDim cn as new sqlconnection(strcn)
dim tx as sqltransaction
try
cn.open
tx=cn.begintransaction
sql="insert into encabezadoFact values (@cod,@etc)"
dim cmd as new sqlcommand(sql,cn,tx) 'Fijate que se pasan estos 3 valores
cmd.parameters.addwithvalue("@cod",lblcod.text)
cmd.parameters.addwithvalue("@etc",txtetc.text)
cmd.executenonquery
tx.commit
catch ex as exception
tx.rollback
msgbox(ex.message)
finally
cn.close
end try
Quizás te aparezca algunos de esos con subrayado verde, algo que diga parecido a esto: Se hará caso omisa a la hora de ejecución; algo asi recuerdo...Ejecuta tu programa no pasa nada si es que aparece eso...
En fin, espero que te sirva...
Gracias por la respuesta.
Veras hice lo que me dijeron y tampoco. Cierro la conexión, la vuelvo abrir pero sigue saliendo el error de:
"ExecuteNonQuery requiere que el comando tenga una transacción cuando la conexión asignada al mismo esta en una transacción local pendiente. No se ha inicializado la propiedad transaction del comando"
La verdad es que no entiendo porque me pone esto si justo antes de asignar los valores del DataRow le digo a la base de datos que voy a comenzar una transacción y al command le asigno la transacción.
Porque me dice que el comando requiere una transacción si ya se la asigno.
El programa trabaja con un tabla que se muestra en un datagridview asociado a un DataAdapter en el que inserto una fila o cambio los valores de una fila i luego lanzo el DataAdapter.Update(DataTable)
A lo mejor esto puede seros de ayuda.
Gracias a todos por ayudarme