ADO Query "INSERT INTO" Syntaxfehler Hilfe
-
Hallo
zuerst must du rausfinden, wo die Fehlermeldung ausgelöst wird.
Denn standardmäßig schließen sich DataSet-Komponenten ohne Fehlermeldung!
Nimm mal ein Debugger, und verfolge die Abläufe beim Schließen, insbesondere den Zugriff auf die Datenbank. Denk dran, der Fehler wird durch explizites Zugreifen auf die Datenbank hervorgerufen. Es muß in deinem Code zu finden sein.bis bald
akari
-
so, habe mal nach dem käfer gesucht.
fehler trat auf beiadotb_ftp->Active = false;welches ich beim schließen der form vor dem schließen der connection.
habe es ausgeklammert und nun klappt es.
dachte es wäre sauberer gewesen, das wieder zu deaktivieren ??
-
Hallo
im Grunde schon. Allerdings wird das durch einen Aufruf des Destruktors auch gemacht.
Und wenn du an adotb_ftp noch weitere Controls hängen hast, die trotz Deaktivieren noch auf die Abfrage zugreifen wollen, ist es eben besser, das automatisch machen zu lassen.bis bald
akari
-
ja, immo hatte ich da noch gar nichts dran außer nen datasource, der wird aber auch noch nicht benutzt. hoffe mal das es nicht noch mehr fehler geben wird. aber das glaube ich eher weniger. es geht halt nicht ohne.
Kannst ja mal im Forum "Projekte nachschauen" da ist die exe drinne, jedoch ist da noch nicht die DB angebunden, da es mir immo nur um den player ging, da mein freund da eine Fehlermeldung bekommt. kannst es dir ja mal anschauen

Vielen Dank für die Antwort und gedult

-
so, ich habe wieder einen fehler in der Insert Into Anweisung. Nur diesmal weis ich nicht weiter. wollte da einfach die Variablen rein machen:
adoqu_save->SQL->Add("INSERT INTO tb_ftp (bezeichnung,host,port,user) VALUES('"+txt_bezeichnung->Text+"','"+txt_host->Text+"','"+a_port+"','"+txt_username->Text+"')");jedoch kommt wieder fehlermeldung, das die Anweisung einen fehler hat. muss ich da doch die Anführungszeichen anders setzten`?
-
Vielleicht müssen da noch ein paar Leerzeichen rein. Beim Einfügen von Strings in eine SQL-Query macht sich auch "QuotedStr()" ganz gut.
-
irgendwie raff ich das immo nicht
-
hab das mal anders ausprobiert. kommt aber die gleiche meldung
adoqu_save->SQL->Add("INSERT INTO tb_ftp (bezeichnung,host,port,user)"); adoqu_save->SQL->Add("VALUES(:bezeichnung,:host,:port,:user)"); adoqu_save->Parameters->ParamByName("bezeichnung")->Value = txt_bezeichnung->Text; adoqu_save->Parameters->ParamByName("host")->Value = txt_host->Text; adoqu_save->Parameters->ParamByName("port")->Value = a_port; adoqu_save->Parameters->ParamByName("user")->Value = txt_username->Text; adoqu_save->ExecSQL();EDIT:
in einem früheren Programm klappte dieses wunderbar, jedoch verwendete ich dort das TQuery und nicht wie jetzt das TADO_Query.
QuerySave->SQL->Clear(); QuerySave->SQL->Add("INSERT INTO archiv(interpret,titel,album,richtung,bewertung)"); QuerySave->SQL->Add("VALUES(:interpret,:titel,:album,:richtung,:bewertung)"); QuerySave->ParamByName("interpret")->Value = txt_interpret->Text; QuerySave->ParamByName("titel")->Value = txt_titel->Text; QuerySave->ParamByName("album")->Value = txt_album->Text; QuerySave->ParamByName("richtung")->Value = txt_richtung->Text; QuerySave->ParamByName("bewertung")->Value = txt_bewertung->Text; QuerySave->ExecSQL();bei TADO musste ich auch vor PramByName das Parameters setzten, damit ich da dran kam. Nur bekomme ich immer wieder "Syntaxfehler", obwohl alles soweit so gesehen 1:1 ist??!?!!?%"§%
-
Hallo
vielleicht ist ja das
QuerySave->SQL->Clear();
der Unterschied?
Du kannst doch mal das fertige SQL-Kommando direkt vor adoqu_save->ExecSQL() ausgeben lassen (Debugger), und in einem passendem Datenbank-Frontend (Access?) direkt ausprobieren.
Dann wirst du ja sehen, welcher Teil falsch ist.bis bald
akari
-
wie kann ich mir das ausgeben lassen, habe noch nicht so viel mit dem debugger gearbeitet?
Edit: das Clear ist da schon vor, habe es vergessen mit einzufügen.
in der Hilfe steht auch folgendes
ADOQuery1->ParamByName("Verb").Value = "propitiate";jedoch wenn ich die variablen etc. entsprechen um ändere kommt Meldung das "ParamByName kein Element von adqu_query ist" auch irgendwie komisch. ist ja ne falsche Hilfe

-
Ich speichere die SQL-Qurey fürs debuggen normalerweise mit QuerySave->SQL->SaveToFile("sql_test.sql"); Ich finde diese Art etwas übersichtlicher als den Debugger (insbesondere bei mehreren Zeilen).
-
Hallo
wie kann ich mir das ausgeben lassen, habe noch nicht so viel mit dem debugger gearbeitet?
So :
[cpp]AnsiString Test = QuerySave->SQL->Text; // Text entweder in einem TMemo anzeigen lassen
// oder mit Breakpoint und Menü Start/Auswerten oder Ändern direkt rauskopieren[/cpp]
allerdings wei0 ich nicht, ob dann auch die extra Parameter berücksichtigt werden.bis bald
akari
-
hmm mir wird einfach
INSERT INTO tb_ftp(bezeichnung,host,port,user)
VALUES(:bezeichnung,:host,:port,:user)ausgegeben. ich versuch das ganze mal ohne parametar
-
hmm das was mir nun ausgegeben wurde :
INSERT INTO tb_ftp (bezeichnung,host,port,user)
VALUES ('fghfgj','fgjgfh','56','fghfj')habe ich einfach so ´bei acces eingefügt und der datensatz wurde angelegt. ich krieg die krätze. im programm läuft das nicht
-
kann es sein das mich das programm vera****en will?
-
ThorstenSteinberg schrieb:
INSERT INTO tb_ftp (bezeichnung,host,port,user) VALUES ('fghfgj','fgjgfh','56','fghfj')Manchmal gibt es ja auch Probleme mit Spaltennamen wie "user", die oft auch schon in der Datenbank deklariert sind.
Gruß,
Alexander
-
ICH KACK AB!!
ich sach doch das will mich ver.. habe user in username umbennant. und siehe da es klappt.!!!
DANKKEEEE!Gibt es irgendwo eine liste mit resvierten Spaltenname oder soo?
-
ThorstenSteinberg schrieb:
Gibt es irgendwo eine liste mit resvierten Spaltenname oder soo?
Das dürfte von Datenbank zu Datenbank variieren. Oft hilft es, gebräuchliche Namen zu vermeiden oder einfach
das Deutsche Wort dafür zu verwenden. Eigentlich erstaunlich, dass username funktioniert...Gruß,
Alexander