Einzelnen Beitrag anzeigen

Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

Re: MySQL/dbexpress Frage - Zellinhalte in Variablen speiche

  Alt 14. Dez 2009, 12:56
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.
  Mit Zitat antworten Zitat