Hallo,
so sollte es funktionieren:
Delphi-Quellcode:
var tmp:Integer;
begin
with QRead do
begin
Close;
CommandText:=
'SELECT id FROM data_item WHERE (name=:Name)';
Parameters.ParamByValue('Name').Value:=Edit1.Text;
Open;
tmp:=Fields[0].AsInteger; // <-- Deine zwischengespeicherte ID
end; // with qRead
//----Hier----
with QDo do
begin
Active:=false;
CommandText:=
'INSERT INTO inventory'+#13#10+
'(charid, backpack_number, itemnumber, itemid, inventoryslot, durability, count,'+
' refine, element, refine_element)'+#13#10+
'VALUES '+
'(:charid, :backpack_number, :itemnumber, :itemid, :inventoryslot, :durability, :count,'+
' :refine, :element, :refine_element)';
with Parameters do
begin
ParamByName('charid').Value:=Edit5.Text;
ParamByName('backpack_number').Value:=-1;
ParamByName('itemnumber').Value:=50;
ParamByName('itemid').Value:=tmp;
...
...
ParamByName('refine_element').Value:=10;
end; // with Parameters
ExecSQL;
end; // with QDo
end;
Wie Du siehst, habe ich Deine Querys ein wenig modifiziert.
Gewöhne Dir ausserdem an, die Querys nicht mit Stringbasteleien zusammen zu bauen, sondern benutze Parameter.
Die
Query wird übersichtlichter und Du kannst die Werte im originalen Datentyp übergeben.