AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MySQL/dbexpress Frage - Zellinhalte in Variablen speichern
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL/dbexpress Frage - Zellinhalte in Variablen speichern

Ein Thema von RaisinSun · begonnen am 10. Dez 2009 · letzter Beitrag vom 16. Dez 2009
Antwort Antwort
Seite 1 von 2  1 2      
RaisinSun

Registriert seit: 9. Dez 2009
4 Beiträge
 
#1

MySQL/dbexpress Frage - Zellinhalte in Variablen speichern

  Alt 10. Dez 2009, 20:14
Datenbank: MySQL • Version: 5 • Zugriff über: dbexpress
Guten Abend,
ich stecke jetzt schon seit ein paar Stunden an diesem Problem fest. Tut mir leid wenn es schon so einen Thread gibt, ich bin hier neu...
Ich habe einen funktionierenden MySQL Server und habe auch Zugriff darauf.
Ich möchte aus einer Zelle in einer Tabelle Namens data_item eine ID herausfinden und sie in einer Variable zwischenspeichern.
Danach dann die ID in einem Insert into in einer anderen Tabelle weiterverwenden.
Mein Quellcodeansatz:
Delphi-Quellcode:
var tmp:String;
begin
with QRead do begin
Close;
CommandText:='Select id From data_item where name="'+Edit1.Text+'";';
Open;
First;
end;
//----Hier----
with QDo do begin
Active:=false;
CommandText:='INSERT INTO `inventory` (`charid`,`backpack_number`,`itemnumber`,`itemid`,`inventoryslot`,`durability`,`count`,`refine`,`element`,`refine_element`) VALUES ('+Edit5.Text+',-1,50,'+tmp+','+Edit6.Text+',8000000,'+Edit2.Text+','+Edit3.Text+','+Edit4.Text+',10);';
ExecSQL;
end;
end;
So und hier möchte ich die Variable einlesen. QRead gibt ja nur ein Feld und einen Datensatz aus.
Den müsste ich doch eigentlich ganz einfach in eine Zelle reinschreiben können.
Tut mir leid wenn ich so doof frage, aber ich bin neu in dem Gebiet.

MfG
Sun
  Mit Zitat antworten Zitat
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
RaisinSun

Registriert seit: 9. Dez 2009
4 Beiträge
 
#3

Re: MySQL/dbexpress Frage - Zellinhalte in Variablen speiche

  Alt 15. Dez 2009, 08:40
Danke für die Hilfe.
Leider hat es nur teilweise funktioniert. Er hat die Parameters nicht akzeptiert, die hab ich dann auch Params umgewandelt. Aus irgendeinem Grund kennt der auch bei QRead das Params.ParamByValue nicht. Ich habe bei der Hilfe die ParamValues gesehen, geht die auch?
Ich hab folglich die ParamByValue auf ParambyName umgewandelt. Dann wenn ich das Programm starte gibt er mir den Fehler aus:
ExeptionKlasse EDatabaseError mit der Meldung'QRead: Parameter 'Name' nicht gefunden.'.

Könntet ihr mir vllt noma helfen?

MfG
Sun
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: MySQL/dbexpress Frage - Zellinhalte in Variablen speiche

  Alt 15. Dez 2009, 09:09
Hallo,

warum wir überhaupt Params benutzt ?

Geht nicht auch folgendes ?

Delphi-Quellcode:
  with QRead do
  begin
    Close;
    CommandText:=
      'SELECT id FROM data_item WHERE (name=:Name)';
    ParamByValue('Name').Value:= Edit1.Text;
    Open;
    tmp:=Fields[0].AsInteger; // <-- Deine zwischengespeicherte ID
  end; // with qRead
oder

Delphi-Quellcode:
  with QRead do
  begin
    Close;
    CommandText:=
      'SELECT id FROM data_item WHERE (name=:Name)';
    ParamByValue('Name').AsString:= Edit1.Text;
    Open;
    tmp:=Fields[0].AsInteger; // <-- Deine zwischengespeicherte ID
  end; // with qRead

Heiko
Heiko
  Mit Zitat antworten Zitat
RaisinSun

Registriert seit: 9. Dez 2009
4 Beiträge
 
#5

Re: MySQL/dbexpress Frage - Zellinhalte in Variablen speiche

  Alt 15. Dez 2009, 14:49
Also ich weiß nicht weiter..
Ich hab euch mal ein Bild gemacht. So siehts in meinem Compiler aus. Höchstwarscheinlich bin ich die Fehlerquelle.
Miniaturansicht angehängter Grafiken
quelltextausschnitt_151.png  
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

Re: MySQL/dbexpress Frage - Zellinhalte in Variablen speiche

  Alt 15. Dez 2009, 14:53
Geht es so?
Delphi-Quellcode:
with QRead do
  begin
    Close;
    CommandText:=
      'SELECT id FROM data_item WHERE (name=:Name)';
    ParamByName('Name').Value:= Edit1.Text;
    Open;
    if not EOF then
      tmp:=FieldByName('id').AsInteger // <-- Deine zwischengespeicherte ID
    else
      ShowMessage('Kein Datensatz vorhanden');
  end; // with qRead
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: MySQL/dbexpress Frage - Zellinhalte in Variablen speiche

  Alt 15. Dez 2009, 14:58
Hallo,

ParamByValue durch ParamByName ersetzen.

Wieder ein Fall, wo das with bei der Code-Vervollständigung stört.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

Re: MySQL/dbexpress Frage - Zellinhalte in Variablen speiche

  Alt 15. Dez 2009, 14:59
Hab ich doch
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: MySQL/dbexpress Frage - Zellinhalte in Variablen speiche

  Alt 15. Dez 2009, 15:00
Hallo,

nicht du

Was bringt es, wenn der TE es nicht macht !!!


Heiko
Heiko
  Mit Zitat antworten Zitat
RaisinSun

Registriert seit: 9. Dez 2009
4 Beiträge
 
#10

Re: MySQL/dbexpress Frage - Zellinhalte in Variablen speiche

  Alt 15. Dez 2009, 19:53
ja schon das funktioniert das hatte ich auch schon geändert, aber der erkennt trotzdem Den Parameter Name in QRead nicht
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz