Antes de empezar a leer del archivo fuente *.csv:
Código Delphi
[-]
IBTransaction.StartTransaction;
IBQuery.SQL.Text := 'INSERT INTO Templates (Id, Value1, Value2, Value3'+ ' VALUES (:Id, :Value1, :Value2, :Value3)';
Donde:
Id en Delphi es de tipo Int64 y en DB BigInt
Value1 en Delphi es de tipo AnsiChar y en DB Char(1)
Value2 en Delphi es de tipo SmallInt y en DB También
Value3 en Delphi es de tipo Boolean y en DB también
En Delphi estos campos se agrupan en un Record.
En cada inserción:
Código Delphi
[-]
IBQuery.Params.ParamByName('Id').AsLargeInt := MyRecord.Id;
IBQuery.Params.ParamByName('Value1').AsAnsiString := MyRecord.Value1;
IBQuery.Params.ParamByName('Value2').AsAnsiString := MyRecord.Value2;
IBQuery.Params.ParamByName('Value3').AsAnsiString := MyRecord.Value3;
IBQuery.ExecSQL;
Pongo un BreakPoint en la primera asignación, no da ningún error hasta llegar a ExecSQL.