Autor Beitrag
bruder jonas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76



BeitragVerfasst: Do 24.04.03 17:39 
hallo,

ich kriege mit dieser anweisung einen fehler: unbekannte column

mysql-datenbank

SQL.Add('INSERT INTO `customers` (`lID`, `sName`) VALUES (``, `' + editNewCustomer.text + '`)');

vielleicht kann mir jmd helfen.

danke
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Do 24.04.03 17:58 
Als erstes würde ich mal die Klammern () und diverse Apostrophe´`'" usw. aufräumen. Da sieht ziemlich wüst aus.

_________________
Gruß
Hansa
bruder jonas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76



BeitragVerfasst: Do 24.04.03 18:48 
Titel: habe ich gemacht, geht aber trotzdem nicht
hallo hansa,

kannst du mir mal aufschreiben, wie eine richtige insert-anweisung für mysql aussieht?

auch wenn ich klammern und semikolon wegnehme geht es nicht. :-(

danke
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Do 24.04.03 21:15 
hallo bruder jonas!

in file 'sqlhome.hlp' steht die procedure INSERT so beschrieben

ausblenden Quelltext
1:
2:
3:
INSERT INTO "customer.db"
(custno, company)
VALUES (9842, "Borland International, Inc.")


ich würde deinen SQL-String so versuchen umzusetzen...

ausblenden Quelltext
1:
2:
{$UNTESTED}
SQL.Add('INSERT INTO customers (ID, sName) VALUES (" ", editNewCustomer.text)');


wieso fügst denn in ID ein leeres feld ein?

mfg, stefan


Zuletzt bearbeitet von grayfox am Do 24.04.03 21:17, insgesamt 1-mal bearbeitet
kiwicht
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Do 24.04.03 21:17 
also, so wie HANSA es schon andeutete:

Aufräumen ;)

Der allgemeinen Übersicht ist es oft sehr dienlich, wenn du deine Werte anhand von Variablen übergibst.

Und zwar so:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
myvar1 := QuotedStr(edit1.text);
myvar2 := QuotedStr(edit2.text);

Das "QuotedStr" packt deine Variable auch gleich in 2 Quote´s, du brauchst dich darum also auch nicht mehr kümmern.

Dann kannst du den ganzen Schmarn an deine Query übergeben:

query.SQL.Text := 'INSERT INTO mydb (feld1, feld2) VALUES ' +
             ' ( ' + myvar1 + ',' + myvar2 + ')';
query.ExecSQL;

So wie es da steht, dürfte es schonmal funktionieren.

Natürlich kannst du auch den Datenbank-Namen und die Namen der Felder dynamisch übergeben, brauchst in dem Fall aber KEIN QuotedStr!
Undzwar so:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
mydb := 'testdb.dbf';
myfeld1 := 'feld1';
myfeld1 := 'feld2';

Und das jetzt übertragen auf das obere Beispiel:

query.SQL.Text := 'INSERT INTO ' + mydb + 
             ' ( + feld1 + ',' + feld2 + ' ) VALUES ' +
             ' ( ' + myvar1 + ',' + myvar2 + ')';
query.ExecSQL;

Tja, und fertig.
Sieht auf den ersten Blick etwas konfus aus, aber mit der Zeit geht das ins Blut über. ;)

Fragen? Fragen!


mfg



ps: hansa, bist mir doch jetzt nicht böse das ich deine Frage beantwortet habe? :D :shock: