Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   insert into befehl (invalid field name) (https://www.delphipraxis.net/152290-insert-into-befehl-invalid-field-name.html)

julian2003 17. Jun 2010 15:10

Datenbank: paradox • Version: 7 • Zugriff über: ?

insert into befehl (invalid field name)
 
hallo

also es handelt sich bei meinem fehler um einen laufzeitfehler der folgendermaßen entsteht.

ich habe ein variable netto vom typ integer.
diese berechnet sich aus diversen edit feldern und wir dann inttostr(netto) in ein neues edit feld übergeben.
nun möchte ich diese variable netto mit folgendem befehl bei klick auf den dbnavigator in die tabelle rechnung übertragen:

Query_rechnung.Active := false;
Query_rechnung.SQL.Clear;
Query_rechnung.SQL.Add('INSERT INTO rechnung (summe) VALUES (netto)');
Query_rechnung.active := true;

rechnung ist meine tabelle, summe die spalte wohin der wert jedes mal übertragen werden soll und netto eben die variable woher ich meinen wert für die tablle bekommen soll.

beim klick auf den dbnavigator kommt aber nun der laufzeitfehl [...]'invalid field name.netto'

Ich bitte um Hilfe.

lg,julian

DeddyH 17. Jun 2010 15:14

AW: insert into befehl (invalid field name)
 
Benutze SQL-Parameter:
Delphi-Quellcode:
Query_rechnung.Close;
Query_rechnung.SQL.Text := 'INSERT INTO rechnung (summe) VALUES (:netto)';
Query_rechnung.ParamByName('netto').Value := netto;
Query_rechnung.ExecSQL;

Christian Seehase 17. Jun 2010 15:15

AW: insert into befehl (invalid field name)
 
Moin Julian,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Das ganze müsste so aussehen:

Delphi-Quellcode:
Query_rechnung.SQL.Add('INSERT INTO rechnung (summe) VALUES ('+IntToStr(netto)+')');
Das Datenbanksystem kennt ja Deine Variable Netto nicht, und geht davon aus dass es sich um einen Spaltennamen handelt (den es ja wohl nicht gibt).
Du möchtest aber nur den Wert der Variablen in die Spalte Summe schreiben.

[EDIT sagt]
Detlefs Lösung ist aber besser
[/EDIT sagt]

DeddyH 17. Jun 2010 15:17

AW: insert into befehl (invalid field name)
 
Noch nicht einmal um einen Spaltennamen (der heißt ja "summe"), sondern um einen Wert, und da kann netto überhaupt nicht passen.

khh 17. Jun 2010 15:21

AW: insert into befehl (invalid field name)
 
hallo Julian,
aus deiner beschreibung geht hervor, dass es sich um Rechnungen handelt.
unabhängig von deinem Problem ist für ein Datenfeld netto integer der falsche Datentyp.
Ich weiss zwar nicht mehr was paradox da auf Lager hat, aber ein Kommawert (currency) mit _3_ Nachkommastellen solltest du da schon nehmen.

julian2003 17. Jun 2010 15:23

AW: insert into befehl (invalid field name)
 
hallo christian

ich habe es so geschrieben:

Zitat:

Query_rechnung.SQL.Add('INSERT INTO rechnung (summe) VALUES ('+netto+')');
weil summe in meiner tabelle sowieso als longinteger festgelegt ist aber nun sagt mir delphi beim kompilieren gleich: incompatible types 'string' and 'integer'

@khh: man darf nur ganze werte eingeben ;)

DeddyH 17. Jun 2010 15:24

AW: insert into befehl (invalid field name)
 
Schau Dir die Posts #2 und #3 noch einmal genau an.

khh 17. Jun 2010 15:24

AW: insert into befehl (invalid field name)
 
Zitat:

Zitat von julian2003 (Beitrag 1029662)
hallo christian

ich habe es so geschrieben:

Zitat:

Query_rechnung.SQL.Add('INSERT INTO rechnung (summe) VALUES ('+netto+')');
weil summe in meiner tabelle sowieso als longinteger festgelegt ist aber nun sagt mir delphi beim kompilieren gleich: incompatible types 'string' and 'integer'

@khh: man darf nur ganze werte eingeben ;)

wieso denn das?

mkinzler 17. Jun 2010 15:24

AW: insert into befehl (invalid field name)
 
Verwende besser Parameter. Sonst halt IntToStr()

julian2003 17. Jun 2010 15:56

AW: insert into befehl (invalid field name)
 
hey leute

ich danke euch sehr für eure lösungsvorschläge.
mit dem vorschlag von deddyH hat es auch vorerst funktioniert. Da mein programm aber schon viel komplexer ist entstand dadurch leider ein komplett neuer fehler welcher aber, wenn man das programm nicht vorgliegen hat, zu schwer ausfindig zu machen ist, daher habe ich das ganze nun so umgestaltet dass ich einen eigenen button "berechnen" gemacht habe und dann erst der navigator aktiviert wird.
so funktioniert nun das ganze, zwar nicht so elegant, aber es funktioniert.

lg,julian


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 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