Datenbank Probleme (INSERT) Ungültiges Schlüsselwort



  • Hallo,

    ich hoffe das mir hier jemand helfen kann ich bin nehmlich langsam am verzweifeln also folgendes ich will daten in eine Datenbank eingeben über Edit felder.

    Der fehler:
    ➡ http://www.blubb-city.de/fehlermeldung.jpg 🙄

    💡 Die datenbank ist einfach auchgebaut Alle felder sind A(lpha) nur das erste (Id) ist ein zähler und als primärschlüsse deklariert.

    Hier der Code:

    stVon = ComboBox2->Text;
     stAn = ComboBox3->Text;
     stMeldung = Memo3->Text;
     if (stVon != "" && stAn != "" && stMeldung != "") {
      ComboBox2->Text = "";
      ComboBox3->Text = "";
      Memo3->Clear();
    
      Query1->Active = false;
      Query1->SQL->Clear();
        Query1->SQL->Add("INSERT INTO EDS_data.db (Id, Pos, Von, An, Meldung, Meldedatum, Meldezeit, Benutzer, ENR) VALUES
     (,1,:Von,:An,:Meldung,:Meldedatum,:Meldezeit,:Benutzer,:ENR)");
        Query1->ParamByName("Von")->Value = stVon;
        Query1->ParamByName("An")->Value = stAn;
        Query1->ParamByName("Meldung")->Value = stMeldung;
        Query1->ParamByName("Meldedatum")->Value = DatumDMY;
        Query1->ParamByName("Meldezeit")->Value = StMi;
        Query1->ParamByName("Benutzer")->Value = Edit8->Text;
        Query1->ParamByName("ENR")->Value = ComboBox1->Text;
        Query1->Active = true;
      Query1->ExecSQL();
     }
    

    ich habe es auch so versucht jedoch das gleiche ergebniss

    Query1->SQL->Add("INSERT INTO `EDS_data.db` (Id, Pos, Von, An, Meldung, Meldedatum, Meldezeit, Benutzer, ENR) 
    VALUES (,1," + stVon + "," + stAn + "," + stMeldung + "," + DatumDMY + "," + StMi + "," + platz + "," + ComboBox1->Text + ")");
    

    💡 Variablen die hier nicht sichtbar sind werden Global übergeben (z.B. DatumDMY)

    Ich hoffe das jemand von euch mir helfen kann.

    MfG
    Acrot



  • wenn ID ein Autowert ist brauchst du das nicht mit im Insert

    ...
    Query1->SQL->Add("INSERT INTO EDS_data.db (Pos, Von, An, Meldung, 
    Meldedatum, Meldezeit, Benutzer, ENR) VALUES
    (1,:Von,:An,:Meldung,:Meldedatum,:Meldezeit,:Benutzer,:ENR)");
    ...
    

    ansonsten mußt du schon einen Wert angeben

    Query1->SQL->Add("INSERT INTO EDS_data.db (ID,Pos, Von, An, Meldung, 
    Meldedatum, Meldezeit, Benutzer, ENR) VALUES
    (:ID_Wert,1,:Von,:An,:Meldung,:Meldedatum,:Meldezeit,:Benutzer,:ENR)");
    

  • Mod

    Hallo

    Query1->Active = true;
    

    solltest du weglassen

    MfG
    Klaus



  • Leider habe ich jetzt folgendes Problem:
    http://www.blubb-city.de/fehlermeldung2.jpg

    Habe alles so geändert wie Ihr es gesagt habt.



  • Wenn Deine Zieltabelle Textdatentypen wie Varchar enthält verwundert mich der Fehler nicht.

    Du hat in Deiner SQL-Anweisung keine Hochkommata die aber für Text (teilweise auch für Datum- und Zeit) nötig sind.

    String FeldA="Text";
    String FeldB="7";
    
    String SQL= "INSTERT INTO TABELLE (MEINTEXTFELD, MEINZAHLFELD) "
                "VALUES ([b]'[/b]"+FeldA+"[b]'[/b],"+FeldB+")";
    


  • Leider habe ich jetzt die folgende fehlermeldung:
    www.blubb-city.de/fehlermeldung3.jpg

    Der momentane stand ist:

    Query1->Active = false;
      Query1->SQL->Clear();
        Query1->SQL->Add("INSERT INTO EDS_data.db (Pos, Von, An, Meldung, Meldedatum, Meldezeit, Benutzer, ENR) 
    VALUES (1,':Von',':An',':Meldung',':Meldedatum',':Meldezeit',':Benutzer',':ENR')");
        Query1->ParamByName("Von")->Value = stVon;
        Query1->ParamByName("An")->Value = stAn;
        Query1->ParamByName("Meldung")->Value = stMeldung;
        Query1->ParamByName("Meldedatum")->Value = DatumDMY;
        Query1->ParamByName("Meldezeit")->Value = StMi;
        Query1->ParamByName("Benutzer")->Value = Edit8->Text;
        Query1->ParamByName("ENR")->Value = ComboBox1->Text;
      Query1->Active = true;
    


  • die Hochkommata sind hier sinnlos, da mit Query1->ParamByName("Benutzer")->Value automatisch die Strings, Floats u.a. entsprechend eingesetzt werden,

    allerdings solltest du den Wert für Pos in Hochkommata schreiben, da

    Die datenbank ist einfach auchgebaut Alle felder sind A(lpha) nur das erste (Id) ist ein zähler und als primärschlüsse deklariert.

    ...
    Query1->SQL->Add("INSERT INTO EDS_data.db (Pos, Von, An, Meldung, 
    Meldedatum, Meldezeit, Benutzer, ENR) VALUES
    ('1',:Von,:An,:Meldung,:Meldedatum,:Meldezeit,:Benutzer,:ENR)");
    ...
    


  • Jetzt habe ich denn fehler hier:
    http://www.blubb-city.de/fehlermeldung4.jpg

    Bald habe ich alle fehlermeldungen durch glaube ich.



  • Jetzt habe ich denn fehler hier:
    http://www.blubb-city.de/fehlermeldung4.jpg

    Bald habe ich alle fehlermeldungen durch glaube ich.

    DOPPELPOST: Sorry ich weiss garnicht wie das passiert ist



  • Query1->Active = true;
    

    Das ist schuld (siehe Posting von KlausB). Das muß heißen:

    Query1->ExecSQL();
    

    Grüße Joe_M.



  • Es klappppt!!
    Dank an alle die mir hier tips gegeben haben hätte aber noch eine frage und zwar möchte ich nach dem INSERT noch ein SELECT machen um die anzeige im DBGrid zu aktualliersiern jedoch bekommen ich diese Fehlermeldung wenn ich den code ausführe.

    http://www.blubb-city.de/fehlermeldung4.jpg

    Query1->SQL->Clear();
    Query1->SQL->Add("SELECT Pos, Von, An, Meldung, Meldedatum, Meldezeit, Benutzer, ENR FROM 'EDS_data.db'");
    Query1->ExecSQL();
    


  • Habe es hinbekommen war irgend ein fehler wo dran es lag weiss ich aber nicht.

    Danke euch allen. 👍


  • Mod

    Hallo

    Es wird Zeit fuer ein Datenbanktut.

    Query1->ExecSQL();
    

    😡

    besser waere da

    Query1->Open();
    

    Mfg
    Klaus


Anmelden zum Antworten