TQuery



  • Hallo, ich habe folgendes Problem, ich möchte per SQL-Insert Anweisung den Inhalt eines Edit-Feldes in eine Datenbank einfügen:

    q1 -> Close();
      q1 -> SQL -> Clear();
      q1 -> SQL -> Add("INSERT INTO Test_Tabelle[Text] VALUES" & Edit1 -> Text.c_str());
      q1 -> Open();
    

    ´



  • gibt es da nicht etwas wie ExecSQL() was Du ausführen müsstest?

    Was für Komponenten benutzt Du denn?
    Und was ist eigentlich das Problem?



  • Ich benutze die Komponete TQuery, mein eigentliches Problem liegt in folgender Zeile:

    q1 -> SQL -> Add("INSERT INTO Test_Tabelle[Text] VALUES" & Edit1 -> Text.c_str());
    

    ich bin mir nich sicher, ob es überhaupt die möglichkeit gibt, den Inhalt von nicht DB-Komponenten in einer SQL-Anweisung einzufügen.



  • hi,

    ich weiss nicht ob es funktioniert aber ich nehme immer parameter.
    also:

    q1 ->SQL->Add("INSERT INTO Test_Tabelle[Text] VALUES(:text1,:text2));
    q1->SQL->ParamByName("text1")->AsString = Edit1->Text;
    ....
    q1->ExecSql();

    allerdings arbeite ich mit komponenten die dies unterstützen. mit der tquery kenn ich nicht aus. könnte also alles blödsinn sein das ich hier schreibe.



  • allerding ein blick in die hilfe und du findest sogar ein gutes beispiel dafür................



  • Das ganze hat nix mit der Komponente an sich zu tun, sondern ist auch ne Frage von SQL-Querys generell.

    1. Anzahl der Felder = Anzahl der Values
    2. Warum schreibt ihr die Felder in eckigen klammern?

    Anonsten: Ein wenig über SQL-Syntax informieren, dann bekommst du das auch hin.



  • Mein Vorschlag (aus meiner bisherigen Erfahrung):

    q1->SQL->Add("INSERT INTO Test_Tabelle (Text) VALUES (" + Edit1->Text + ")");
    

    Ein paar Anmerkungen:
    1. Warum hast Du überall Leerzeichen drin?
    2. Warum ist der Feldname in eckigen Klammern? (die Frage kam schon mal)
    3. Warum verwendest Du das kaufmännische Und "&", um die Strings aneinander zu hängen? (VB?)
    4. Warum verwendest Du c_str() (zumal das einen const-Zeiger liefert)?
    5. Hinter VALUES war kein Leerzeichen. Das könnte ein Problem sein.
    6. Meines Wissens muß bei der Verwendung von VALUES auch der einzufügende Wert in Klammern stehen.

    Gruß,

    Alexander



  • Alexander Kempf schrieb:

    2. Warum ist der Feldname in eckigen Klammern? (die Frage kam schon mal)

    ja, von mir 😉

    5. Hinter VALUES war kein Leerzeichen. Das könnte ein Problem sein.

    Nein, hinter Values brauch kein Leerzeichen

    6. Meines Wissens muß bei der Verwendung von VALUES auch der einzufügende Wert in Klammern stehen.

    Ja, aber wie schon erwähnt: hat alles nichts mit der Komponente an sich zu tun, sondern mit Grunsätzlichem.

    [Sorry, musste einfach noch mal meinen Senf dazugeben 🙄 ]


Anmelden zum Antworten