Tal y como tú tenías pensado el proceso no creo que haga falta un botón nuevo, yo lo haría como te he puesto. El propio proceso, si es correcto hace commit y si ocurre algún error, rollback.
Tal y como lo he puesto se come el mensaje de error, te lo muestro completo:
Código Delphi
[-]
procedure TForm14.BitBtn1Click(Sender: TObject); begin
Database1.StartTransaction;
try
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('INSERT INTO detfacturafinal');
SQL.Add('SELECT * FROM detfactura');
ExecSQL;
end;
DataBase1.Commit;
except
on E:Exception do begin
DataBase1.Rollback;
MessageDlg('Error:' + E.Message, mtError, [mbOK], 0);
end;
end;
end;
procedure TForm14.SpeedButton3Click(Sender: TObject);begin
Database1.StartTransaction;
try
with Query1 do
begin
Close;
SQL.Clear;
SQL.Add('DELETE FROM detfactura');
ExecSQL;
end;
DataBase1.Commit;
except
on E:Exception do begin
DataBase1.Rollback;
MessageDlg('Error:' + E.Message, mtError, [mbOK], 0);
end;
end;
end;
Saludos