1. TIBTransaction.Active := true will rollback a possible current running transaction and start a new one.
TIBTransaction.StartTransaction will give you an exception if the transaction is already running.
procedure TIBTransaction.SetActive(Value: Boolean);
begin
if csReading in ComponentState then
FStreamedActive := Value
else
if Value and not InTransaction then
StartTransaction
else
if not Value and InTransaction then
Rollback;
end;
2. Reading the properties TIBTransaction.Active and TIBTransaction.InTransaction are the same
public
property InTransaction: Boolean read GetInTransaction;
published
property Active: Boolean read GetInTransaction write SetActive;