Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Userdaten in Tabelle einfügen!? (https://www.delphipraxis.net/107857-userdaten-tabelle-einfuegen.html)

eXpli 3. Feb 2008 16:47

Datenbank: *.mdb • Zugriff über: ADO

Userdaten in Tabelle einfügen!?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen!

Folgendes Problem:

Ich versuche eine Punktzahl und den User welcher diese erreicht hat in meine DB (tabelle) zu schreiben.
Die Punktzahl (ist nen Int) setze ich schon in der form "TestAufgaben". Der User wird dann auf der nächsten form ("TestName") festgelegt und dann via Query an die DB (Tabelle) gesendet.

Hier mein Versuch:

Delphi-Quellcode:
procedure TTestName.Button1Click(Sender: TObject);
begin
  QRY_Insert_User.SQL.Text := 'INSERT INTO Highscore (Punktzahl, User) VALUES (:Punktzahl, :User);';
  QRY_Insert_User.Parameters.ParamByName('Punktzahl').Value := TestAufgaben.punkte;
  QRY_Insert_User.Parameters.ParamByName('User').Value := Edit1.Text;
  QRY_Insert_User.ExecSQL;
end;
Leider bringt das immer einen Fehler! (siehe Anlage)

DeddyH 3. Feb 2008 16:58

Re: Userdaten in Tabelle einfügen!?
 
Mit ADO kenn ich mich nicht aus, aber versuch mal eine dieser beiden Möglichkeiten:
Delphi-Quellcode:
QRY_Insert_User.Parameters.ParamByName('User').Value := QuotedStr(Edit1.Text);
oder
Delphi-Quellcode:
QRY_Insert_User.Parameters.ParamByName('User').AsString := Edit1.Text;

eXpli 9. Feb 2008 09:25

Re: Userdaten in Tabelle einfügen!?
 
Grad beide Versionen versucht, aber keine hat funktionieren wollen :(

Verwirren tut mich, dass ich an anderer Stelle in meinem Prog die SQL-Abfrage auf die gleiche Weise gemacht hab und sie da fehlerlos ausgeführt wird. Allerdings ging es dort nur um strings.

Muss man bei der Parameterübergabe bei integer evtl. was besondres beachten?

Gruß!

omata 9. Feb 2008 14:08

Re: Userdaten in Tabelle einfügen!?
 
Hier nochmal ein neuer Vorschlag...

Delphi-Quellcode:
QRY_Insert_User.SQL.Text:=
  Format(
    'INSERT INTO Highscore (Punktzahl, User) ' +
    'VALUES (%d, %s)',
    [TestAufgaben.punkte, QuotedStr(Edit1.Text)]
  );
QRY_Insert_User.ExecSQL;
Gruss
Thorsten

DeddyH 9. Feb 2008 15:37

Re: Userdaten in Tabelle einfügen!?
 
Wenn uns der TE mal mitteilt, welche Typen die beiden Datenfelder haben, könnten wir vermutlich eher weiterhelfen.

eXpli 9. Feb 2008 20:17

Re: Userdaten in Tabelle einfügen!?
 
Naja wenn ich wüßte was nen TE ist... Anyway!

Zitat:

Punktzahl (ist nen Int)
(Für die sichs nicht denken können: User ist nen ganz normaler Text)

Hilft das jetzt?!?

DeddyH 9. Feb 2008 20:23

Re: Userdaten in Tabelle einfügen!?
 
Also, TE heißt Thread-Ersteller (also Du). Und dann versuch es mal so:
Delphi-Quellcode:
procedure TTestName.Button1Click(Sender: TObject);
begin
  QRY_Insert_User.SQL.Text := 'INSERT INTO Highscore (Punktzahl, User) VALUES (:Punktzahl, :User);';
  QRY_Insert_User.Parameters.ParamByName('Punktzahl').AsInteger := TestAufgaben.punkte;
  QRY_Insert_User.Parameters.ParamByName('User').AsString := Edit1.Text;
  QRY_Insert_User.ExecSQL;
end;

marabu 9. Feb 2008 21:30

Re: Userdaten in Tabelle einfügen!?
 
Hallo,

das einzig störende, was ich momentan im SQL des ersten Beitrags erkenne, ist das eklige Semikolon am Ende. AsString() und AsInteger() sind bei beim ADO TParameter nicht verfügbar - und wer Query-Parameter benutzt, der muss sich um Quotes nicht mehr kümmern.

Gute Nacht

DeddyH 9. Feb 2008 21:31

Re: Userdaten in Tabelle einfügen!?
 
Wie ich schon sagte: ADO ist nicht meine Welt ;)

alzaimar 10. Feb 2008 08:26

Re: Userdaten in Tabelle einfügen!?
 
Das Parameter muss wissen, um was für einen Datentyp es sich handelt, damit es die implizite Konvertierung in SQL-Syntax vornehmen kann.
Delphi-Quellcode:
procedure TTestName.Button1Click(Sender: TObject);
begin
  QRY_Insert_User.SQL.Text := 'INSERT INTO Highscore (Punktzahl, User) VALUES (:Punktzahl, :User);';
  QRY_Insert_User.Parameters.ParamByName('Punktzahl').DataType := ftInteger;
  QRY_Insert_User.Parameters.ParamByName('User').DataType := ftString;
// bis hierhin kann man das auch einmalig im Vorfeld zuweisen.

// das eigentliche 'Benutzer einfügen' besteht dann aus diesen drei Zeilen.
  QRY_Insert_User.Parameters.ParamValues['Punktzahl'] := TestAufgaben.punkte;
  QRY_Insert_User.Parameters.ParamValues['User'] := Edit1.Text;
  QRY_Insert_User.ExecSQL;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 Uhr.
Seite 1 von 2  1 2      

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