Hier Dein ganzes Beispiel unter FireDAC und MS
SQL Server:
Delphi-Quellcode:
var
i: Integer;
begin
// describe the SQL query
Query1.SQL.Text := '
INSERT INTO Test_Table (F1, F2, F3, F4, F5) VALUES (:ID, :F_INTEGER, :F_FLOAT, :F_STRING, :F_DATE)';
z := 0;
// define the parameter types passed to the query :
Query1.Params[0].DataType := ftInteger;
Query1.Params[1].DataType := ftInteger;
Query1.Params[2].DataType := ftFloat;
Query1.Params[3].DataType := ftString;
Query1.Params[3].Size := 30;
Query1.Params[4].DataType := ftDateTime;
// specify the array dimension:
Query1.Params.ArraySize := 1000;
// populate the array with parameter values:
for i := 0
to 1000 - 1
do begin
Query1.Params[0].AsIntegers[i] := i + 1;
Query1.Params[1].AsIntegers[i] := i + 2000 + 1;
Query1.Params[2].AsFloats[i] := (i + 1) / 12;
Query1.Params[3].AsStrings[i] := '
Values ' + IntToStr(i + 1);
Query1.Params[4].AsDateTimes[i] := Now;
end;
// insert 1000 rows into the BATCH_TEST table
Query1.Execute(1000, 0);
ShowMessage(IntToStr(Query1.RowsAffected));
end;
Ganz böse Falle: Es darf nicht .AsInteger heißen, sondern es muss .AsInteger
s heißen, und das bei allen .AsXXX Werten.
Außerdem ist der [i] Parameter bei FireDAC hinter der .AsValue Definition und nicht hinter der .Params[x] Angabe.
Vielleicht nützt es Dir ja was ...
Gruß
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS
SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney