Hola, veo con gran asombro los consejos dados al compañero, me van a disculpar si sueno odioso, pero quiero corregir algo: Cuando estas trabajando directamente con un componente que ejecuta consultas directamente como lo es un TSQLQuery, no necesitas de la llamada al procedimiento Post. Las razones técnicas ya son conocidas pos los que conozcan el funcionamiento interno del TDataset (que es donde se implementa este procedimiento).
Por otro lado, veo que segue habiendo un vacío de información aquí. No se sabe cuál es la configuración que estás utilizando para la transacción. La configuración la puedes encontrar en la propiedad Params del componente de transacción.
Con respecto al error que tenías ("Transaction Already Active") el código que has utilizado no es lo recomentado. Prueba el siquiente:
Código Delphi
[-]
if not SQLTransaction1.InTransaction then SQLTransaction1.StartTransaction;
while not Dbf1.EOF do
begin
with SQLQuery1 do
begin
InsertSQL.Clear;
InsertSQL.Add('insert into detable values('+Dbf1.Fields[0].AsString
+','''+Dbf1.Fields[1].AsString+''')');
ExecSQL;
end;
Dbf1.Next;
end;
SQLTransaction1.CommitRetaining;
Debes asegurarte que el componente SQLQuery1 esté enlazado a SQLTransaction1 y estos últimos tambien conectados al componente de conección a la base de datos.
Saludos y quedo a la espera de que nos digas que estás colocando en la propiedad Params del SQLTransaction1