Delphi - no se realizan algunos updates en mi transaccion

 
Vista:

no se realizan algunos updates en mi transaccion

Publicado por nemesis (1 intervención) el 12/04/2011 19:20:16
Saludos cordiales y gracias por su atencion, mi problema es que tengo una aplicacion
de control de inventario desarrollada en delphi y mysql, donde tengo un modulo de venta
en el cual se realiza la operecion de insercio de informacion de la factura, insercion de
detalle de la factura y actualizacion de las existencias del inventario, las tres operaciones
se encuentran dentro de una transaccion, las inserciones se realizan bien, pero las actualizaciones
en ocaciones se realizan todas y otras veces se realiza solo una parte, mi duda es que se supone que
estando dentro de una transaccion se deberian de realizar todas las operaciones o si falla alguna,
no se tendria que realizar ninguna, ¿que estara pasando?, espero que me puedan ayudar.

Lo siguiente es un resumen del codigo que utilizo:


fprincipal.AdoCon.BeginTrans;
try
//en la funcion GuardarFactura se encuentra la instruccion sql que inserta los datos de la factura y devuelve el
//correlativo del nuevo registro de la tabla facturas y lo agrega a la variable idfactura

fprincipal.idfactura:=fprincipal.GuardarFactura();


for i:=1 to fprincipal.DataGrid.RowCount-2 do
begin
//el procedimiento guardardetallefactura contiene las instrucciones que insertan los datos del detalle de la factura
//es decir los articulos que compro el cliente

Guardardetallefactura(fprincipal.idfactura,fprincipal.DataGrid.Cells[0,i]);

//en la funcion modificarexistencia se encuentra una instruccion update que se encarga de resucir la existencia,
//es decir, de reducir el stock de cada articulo que se llevo el cliente, es aqui donde algunos updates se realizan y
//otros no

modificarexistencia(fprincipal.DataGrid.Cells[0,i],fprincipal.DataGrid.Cells[3,i]);
end;

fprincipal.AdoCon.CommitTrans;
except
fprincipal.AdoCon.RollbackTrans;
showmessage('No se pudo realizar la operacion.');
end;


el contenido del procedimiento de modificarexistencia() es mas o menos el siguiente:

//procedimiento modificar existencia
procedure modificarexistencia(idarticulo:string;cantidad:string)
var
SqlText:string;
Rscon:_RecordSet;
begin
SqlText := 'update articulo set cantidad=cantidad+'+cantidad+' where idarticulo='+idarticulo;
RsCon := coRecordSet.Create;
RsCon.Open(SqlText,fprincipal.AdoCon,adOpenDynamic,adLockOptimistic,adCmdText);
end;


Gracias de antemano por su ayuda, si quieren mas especificaciones del codigo con mucho gusto las coloco para
que lo examinen.
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