Problem mit Adoquery und Update Sqlstatement



  • Hi Leutz,

    ich möchte die Werte einer Access Tabelle updaten und bekomme ständig die Fehlermeldung "Syntaxfehler in Update SQL Anweisung".

    Ich habe schon alles mögliche probiert.

    void __fastcall TForm3::Button5Click(TObject *Sender)
    {
    
    int *pID =&id_h;
    
    dbzugriff->ADOQuery1->Close();
    dbzugriff->ADOQuery1->SQL->Clear();
    dbzugriff->ADOQuery1->SQL->Add("update Hausverwaltung set");
    dbzugriff->ADOQuery1->SQL->Add("H-Name = '" +Edit1->Text+"'");
    dbzugriff->ADOQuery1->SQL->Add(",");
    dbzugriff->ADOQuery1->SQL->Add("H-Telefon='"+ Edit2->Text+"'" );
    dbzugriff->ADOQuery1->SQL->Add(",");
    dbzugriff->ADOQuery1->SQL->Add("H-Fax= '"+Edit3->Text+"'");
    dbzugriff->ADOQuery1->SQL->Add(",");
    dbzugriff->ADOQuery1->SQL->Add("H-Straße= '"+Edit4->Text+"'");
    dbzugriff->ADOQuery1->SQL->Add(",");
    dbzugriff->ADOQuery1->SQL->Add("H-Ort='"+Edit5->Text+"'");
    dbzugriff->ADOQuery1->SQL->Add(",");
    dbzugriff->ADOQuery1->SQL->Add("H-PLZ='"+Edit6->Text+"'");
    
    dbzugriff->ADOQuery1->SQL->Add("WHERE HausverwaltungID ="+IntToStr(*pID));
    dbzugriff->ADOQuery1->ExecSQL();
    
    }
    

    wäre super wenn mir jemand helfen könnte.
    thx



  • Versuch doch mal die Spaltennamen in Anführungszeichen zu setzen, z.B. "H-Name". Oder verwende - falls möglich - keine
    Spaltennamen mit Minus-Zeichen. Vielleicht anstatt H-Name lieber H_Name. Meine Vermutung ist nämlich, dass H-Name als
    H - Name interpretiert wird. Ist allerdings nur ne Vermutung.
    Ansonsten könntest Du natürlich mal versuchen das Statement direkt auf die Datenbank abzuschicken (z.B. im SQL-Explorer).

    Gruß,

    Alexander



  • Hi,

    @Alexander;

    Alexander schrieb:

    Oder verwende - falls möglich - keine
    Spaltennamen mit Minus-Zeichen. Vielleicht anstatt H-Name lieber H_Name. Meine Vermutung ist nämlich, dass H-Name als
    H - Name interpretiert wird. Ist allerdings nur ne Vermutung.

    Deine Vermutung war absolut richtig! 👍
    Ich habe den ganzen Tag damit verbracht, die SQL Abfrage ohne Fehler hinzubekommen. Das es an den Feldnamen liegen könnte, hätte ich jetzt nicht gedacht.

    Super!
    thx nochmal!

    mfg



  • dbzugriff->ADOQuery1->SQL->Add("update Hausverwaltung set"); 
    dbzugriff->ADOQuery1->SQL->Add("H-Name = '" +Edit1->Text+"'");
    

    dürfte nur an den fehlenden Leerzeichen liegen "update Hausverwaltung setH-Name ..."

    Sollte wohl so eher funktionieren.

    dbzugriff->ADOQuery1->SQL->Add("update Hausverwaltung set "); 
    dbzugriff->ADOQuery1->SQL->Add("H-Name = '" +Edit1->Text+"'");
    


  • fragg schrieb:

    dürfte nur an den fehlenden Leerzeichen liegen "update Hausverwaltung setH-Name ..."

    Dachte ich auch ein Moment lang, aber Add() fügt automatisch einen Zeilenvorschub ein.

    Gruß,

    Alexander


Anmelden zum Antworten