Just in case anyone else wants it I've subclassed EDBDatabase
{$IFDEF D15UP}
[ComponentPlatformsAttribute(pidWin32 or pidWin64)]
{$ENDIF}
TnlhDatabase = class(TEDBDatabase)
public
procedure Rollback(DoCleanup: boolean = False); overload;
published
property Connected stored False;
end;
procedure TnlhDatabase.Rollback(DoCleanup: boolean = False);
var
Cntr: integer;
begin
if DoCleanup then begin
for Cntr := 0 to DataSetCount - 1 do begin
if TableInTransaction(DataSets[Cntr].Name) then begin
if DataSets[Cntr].State in dsEditModes then DataSets[Cntr].Cancel;
DataSets[Cntr].Refresh;
end;
end;
end;
inherited Rollback;
end;