Eine Transaction, die nur SELECT-Anweisungen zum Inhalt hat (also ausschlieslich lesender Zugriff) ist sinnlos.
Du kannst also die Transaction in
function TStatisticsDataModule.SQLSelect
ruhig entfernen.
Eigentlich sollte der Auflauf so aussehen, dass es nur eine Transaction gibt:
Delphi-Quellcode:
BeginTransaction;
try
for Entry in LogFile.Content do
begin
SQLSelect({DS},{WERT1},...);
if not DS.IsNull then
SQLUpdate({WERT1},...)
else
SQLInsert({WERT1},...);
end;
CommitTransaction;
except
AbortTransaction;
raise;
end;