Hello,
To be fair, I don't know "implicit starts". Maybe (hypothesis), "implicit starts" ensures that the transaction is always active (never need to code to start it). So (hypothesis), because "explicit starts" (oTrans.Options := [stoUseExplicitStart];) implies having to code if oTrans.InTransation then oTrans.StartTransaction;, you can't explicitly start a transaction having called oTrans.Options := [stoUseImplicit]; one time (with one\some embedded SQL calls to Open or ExecSQL inside).