Si perdon adjunto la imagen en un .zip, cambie insolation a xiReadCommitted pero esta mañana me presento el mismo problema.
Lo que note es que Cuando un usuario a esta modificando una Orden de Pago se realizan una serie de select para que puedan elegir los datos por ejemplo el tipo de impuesto.
Y si en ese mismo instante otro usuario b esta intentando eliminar un registro de una orden de pago es bloqueado por el usuario "a" hasta que este termina.
las transacciones las realizo de la siguiente manera y estan en un mismo evento en el boton aceptar:
Código Delphi
[-]
procedure TfrmOrdenPagoEdicion.BitBtn3Click(Sender: TObject);
begin
try
dmModulo.CNDHBD.StartTransaction;
qryActualiza:=Tadquery.Create(self);
qryActualiza.Connection:= dmModulo.CNDHBD;
qryActualiza.close;
qryActualiza.sql.text:=' Delete from OrdenPagoPresupuesto where AñoOrdenPago = :Ao and OrdenPago = :OP and documento = :documento '+
' and UnidadResponsable = :UR '+
' and AñoEstructuraProgramatica = :AOE and EstructuraProgramatica = :EP and Area = :Area and '+
' ClavePresupuestal = :CP and Mes = :Mes ';
qryActualiza.parambyname('AO').asinteger:= strtoint(vgAoOP);
qryActualiza.parambyname('OP').asinteger:= strtoint(vgOP);
qryActualiza.parambyname('Documento').asinteger:= qryOrdenPagoPresupuesto.fieldbyname('Documento').asinteger;
qryActualiza.parambyname('UR').asinteger:= qryOrdenPagoPresupuesto.fieldbyname('UnidadResponsable').asinteger;
qryActualiza.parambyname('AOE').asinteger:= qryOrdenPagoPresupuesto.fieldbyname('AñoEstructuraProgramatica').asinteger;
qryActualiza.parambyname('EP').asinteger:= qryOrdenPagoPresupuesto.fieldbyname('EstructuraProgramatica').asinteger;
qryActualiza.parambyname('Area').asinteger:= qryOrdenPagoPresupuesto.fieldbyname('Area').asinteger;
qryActualiza.parambyname('CP').asinteger:= qryOrdenPagoPresupuesto.fieldbyname('ClavePresupuestal').asinteger;
qryActualiza.parambyname('Mes').asinteger:= qryOrdenPagoPresupuesto.fieldbyname('Mes').asinteger;
qryActualiza.ExecSQL;
dmModulo.CNDHBD.Commit;
except
dmModulo.CNDHBD.Rollback;
raise;
end;
end.
Esta falla se presento desde que cambie el engine por firedac.
Muchas gracias por la ayuda