Parameter XY has no default value. ????



  • Hallo Jungs,

    vielleicht ist die Frage blöd, aber ich reskiere trotzdem.

    Mein projekt startet ohne probleme. Die Datenbank wird ohne Probleme eingelesen und jetzt möchte ich neue Datensätze anlegen. Dabei benutze ich TEdits und folgenden Code.

    Ich habe folgenden Code.

    ProjectOverview->ADOQuery1->SQL->Clear();
     ProjectOverview->ADOQuery1->SQL->Add("Insert INTO projectlist(Status,Projectnumber,Projectname,Customer) VALUES ("+newProjectnumber->Text+","+newProjectnumber->Text+","+newProjectname->Text+","+newCustomer->Text +")");
     ProjectOverview->ADOQuery1->ExecSQL();
     ProjectOverview->ADOQuery1->Active = true;
    

    Ich bekomme wenn ich den Button create drücke ständig "Parameter newProjectnumber has no default value.", obwohl die TEdits gefüllt sind.

    Was mache ich falsch?

    Gruß



  • Lass dir den SQL-String mal zur Laufzeit ausgeben und prüfe, ob er Sinn ergibt.
    Dass "newProjectNumber" als Parameter betrachtet wird, obwohl es offenbar nur der Name der Edit-Komponente ist, ist doch etwas verwunderlich.



  • Lass dir den SQL-String mal zur Laufzeit ausgeben und prüfe, ob er Sinn ergibt.

    Wie mache ich das?



  • Ähm, z.B. Memo1->Text = ADOQuery1->SQL->Text; !?



  • Sorry das es so lange gedauert hat.

    ProjectOverview->ADOQuery1->SQL->Clear();
     ProjectOverview->ADOQuery1->SQL->Add("Insert INTO projectlist(status,projectnumber,projectname,customer) VALUES ("+newProjectnumber->Text+","+newProjectnumber->Text+","+newProjectname->Text+","+newCustomer->Text +")");
     //ProjectOverview->ADOQuery1->ExecSQL();
     Memo1->Text = ADOQuery1->SQL->Text;
    

    in Memo1 steht dann:

    Insert INTO projectlist(status,projectnumber,projectname,customer) VALUES (newProjectnumber,newProjectnumber,newProjectname,newCustomer)

    Es scheint alles ok zu sein oder?



  • offensichtlich nicht, außer du hast newProjectnumber,newProjectnumber,newProjectname,newCustomer in den Edits stehen. Ich denke aber mal eher da sollten Zahlen hin.

    greetz KN4CK3R



  • das nuss drin stehen. Habe jetzt in alle edits was anderes reingeschrieben.

    Insert INTO projectlist(status,projectnumber,projectname,customer) VALUES (tfvzgbuh,tfvzgbuh,ghvbj,fghj)



  • swunder schrieb:

    in Memo1 steht dann:

    Insert INTO projectlist(status,projectnumber,projectname,customer) VALUES (newProjectnumber,newProjectnumber,newProjectname,newCustomer)

    Es scheint alles ok zu sein oder?

    der Schein trügt: es fehlen die einfachen Anführungszeichen, d.h. dein SQL muß eigentlich so aussehen:

    Insert INTO projectlist(status,projectnumber,projectname,customer) VALUES ('newProjectnumber','newProjectnumber','newProjectname','newCustomer')
    

    falls es sich allerdings bei deinen Tabellenfeldern nicht um Zeichenfelder (strings) handelt bekommst du so auch wieder Fehler

    besser ist die Verwendung von Parametern, da die den Feldtyp entsprechend verwenden:

    ProjectOverview->ADOQuery1->SQL->Add("Insert INTO projectlist(status,projectnumber,projectname,customer) VALUES (:status,:newProjectnumber,:newProjectname,:newCustomer)");
    ProjectOverview->ADOQuery1->Parameters->ParamByName("status")->Value = newProjectnumber->Text;
    ProjectOverview->ADOQuery1->Parameters->ParamByName("newProjectnumber")->Value = newProjectnumber->Text.ToInt(); //falls ProjectNumber ein Int ist, alternativ ToIntDef
    ProjectOverview->ADOQuery1->Parameters->ParamByName("newProjectname")->Value = newProjectname->Text;
    ProjectOverview->ADOQuery1->Parameters->ParamByName("newCustomer")->Value = newCustomer->Text;
    ProjectOverview->ADOQuery1->ExecSQL();
    


  • @KN4CK3R

    HAst recht mit Zahlen klapt es wunder bar!!!

    ???? WARUM ????



  • weil du das so gemacht hast?!
    Ist doch deine Tabelle.

    greetz KN4CK3R



  • @KN4CK3R
    Wo kann ich diesen Wert (Zahlen oder Strings) beinflussen?

    @Linnea
    habe deinen Code ausprobiert jetzt bekommen ich folgenden Fehler heraus.

    Syntax error in FROM clause.



  • wie kann das denn kommen? ist doch gar kein FROM im Query drin, oder? an welcher Stelle (Quellcode) kommt denn der Fehler?


Anmelden zum Antworten