ADO Query "INSERT INTO" Syntaxfehler Hilfe



  • 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


Anmelden zum Antworten