hola chicos he tenido ultimamente unos comportamientos extraños en el sistema el cual por medio del componente DBExpress realizo insersiones actualizaciones en firebird.
ultimamente e visto que en las multiples tablas que realizo una insersion de producto enviando el id del producto a varias tablas 10 mas o menos por lo general en dos de ellas falla la insersion.
este es mas o menos como lo manejo:
Código Delphi
[-]
trnIngresaArticulos := dmConecta.FBLINUXCONECTION.BeginTransaction;
try funciones.CapIdArt; with dmLogicaArticulos.qIngresaArt do
try
finally
ExecSql;
end;
with dmlogicaarticulo.qinsertaotracosa etc
try
......
finally
....
end;
with dmLogicaArticulos.qArt_Marca do try
Close;
sql.clear;
sql.Add('insert into ARTXMARCA(ID_ARTICULO, ID_MARCA) ');
sql.Add('values(:pId_Articulo, :pId_Marca)');
parambyname('pId_Articulo').AsInteger := idArticulo;
parambyname('pId_Marca').AsInteger := id_Marca;
finally
ExecSql;
end;
end;
dmConecta.FBLINUXCONECTION.CommitFreeAndNil(trnIngresaArticulos);
ShowMessage('Articulo Agregado Satisfactoriamente');
except
on e: exception do
begin
ShowMessage('Articulo no Fue ingresado Correctamente' + e.Message);
dmConecta.FBLINUXCONECTION.RollbackFreeAndNil(trnIngresaArticulos);
Raise;
end;
end;
if Application.MessageBox('¿Desea Agregar Otro Articulo?', 'Confirmación',
MB_ICONQUESTION OR MB_YESNO) = ID_NO then
begin
frmPrincipal.CerrarPestana;
end
else begin
DtpFechaIngreso.DateTime := Now;
eCodBarra.clear;
mNombre.clear;
cbxTallas.clear;
end;
ah por supuesto la aplicacion la tienen 15 usuarios ingresando... repito no es todo momento...
Saludos