Intenta capturar el error con un Try..Except.
Código Delphi
[-]
try
...
Query.ParamByName('descripcion').AsString := stringGrid1.Cells[3, i];
Query.ParamByName('unitario').AsString := stringGrid1.Cells[4, i];
Query.ExecSQL;
except
on E:Exception do begin
MessageDlg(Format('Error: %s Clase: %s',[E.Message, E.ClassName]), mtError, [mbOK], 0);
end;
end;
Eso te dará si hay algún error al ejecutar.
Por otro lado puedes ejecutar paso a paso y ver si hace todo el recorrido.