Code: Select all
try
for AMember in x.A['articles'] do
begin
Qry.SQL.Text := sqlStockArticlesDelete;
Qry.Params[0].DataType := ftString;
Qry.Params[1].DataType := ftString;
Qry.Params[0].AsString := AMember.AsObject.S['gencod_art'];
Qry.Params[1].AsString := AMember.AsObject.S['code_art'];
Qry.Execute; <==== error occurs on the 2nd loop. Looks like array isn't initialized after changing the SQL property.
Qry.SQL.Text := sqlStockArticlesInsert;
Qry.Params[0].DataType := ftString;
Qry.Params[1].DataType := ftString;
Qry.Params[2].DataType := ftString;
Qry.Params[3].DataType := ftInteger;
Qry.Params[4].DataType := ftFloat;
Qry.Params[0].AsString := AMember.AsObject.S['lib_art'];
Qry.Params[1].AsString := AMember.AsObject.S['gencod_art'];
Qry.Params[2].AsString := AMember.AsObject.S['code_art'];
Qry.Params[3].AsInteger := AMember.AsObject.i['colisage'];
Qry.Params[4].asfloat := AMember.AsObject.f['stock'];
Qry.Execute;
if AMember.AsObject.A['artDetail'].Length >= 1 then
begin
Qry.SQL.Text := sqlStockArticlesDetailInsert;
Qry.Params[0].DataType := ftString;
Qry.Params[1].DataType := ftString;
Qry.Params[2].DataType := ftString;
Qry.Params[3].DataType := ftString;
Qry.Params[4].DataType := ftString;
Qry.Params[5].DataType := ftInteger;
Qry.Params.ValueCount := AMember.AsObject.A['artDetail'].Length;
for i := 0 to Qry.Params.ValueCount - 1 do
begin
Qry.Params[0][i].AsString := AMember.AsObject.S['gencod_art'];
Qry.Params[1][i].AsString := AMember.AsObject.S['code_art'];
Qry.Params[2][i].AsString := AMember.AsObject.A['artDetail'].O[i].S
['gencod'];
Qry.Params[3][i].AsString := AMember.AsObject.A['artDetail'].O[i].S
['couleur'];
Qry.Params[4][i].AsString := AMember.AsObject.A['artDetail'].O[i].S
['taille'];
Qry.Params[5][i].AsInteger := AMember.AsObject.A['artDetail'].O[i].i
['nb_pcs'];
end;
Qry.Execute(Qry.Params.ValueCount);
end;
end;