Insert - Abfrage mit TQuery - Borland Builder C++

Mike_2005

Grünschnabel
Hallo,
ich bekomme die folgende Fehlermeldung:
http://www.MichaelSchilling.de\temp\snap.gif

Obwohl die Felder in der Datenbank, in der Reihenfolge existieren.

Code:
Query1->SQL->Add("Insert into dbo.adresse (Name,Vorname,Strasse,Ort,PLZ)");
Query1->SQL->Add("ename->Text,evorname->Text,estrasse->Text,eort->Text,eplz->Text");
Query1->ExecSQL();

(Ich nutze hier die Komponente TQuery)
(Das folgende sind Edit-Felder:ename,evorname,estrasse,eort,eplz)

Woran liegt es ?
Was mache ich falsch ?
Gibt es eine andere Möglichkeit eine SQL Abfrage im Borland Builder zu machen ?
Wie kann ich die obere Fehlermeldung abfangen, so das eine MessageBox aufgeht ?
 
bin grad hier drüber gestolpert... beschäftige mich grad mit c#.NET und hatte dort eine ähnliche Fehlermeldung.
Versuchs mal mit einem try - catch befehl.

etwa wie dieser:
Code:
try 
{
Query1->SQL->Add("Insert into dbo.adresse (Name,Vorname,Strasse,Ort,PLZ)");
Query1->SQL->Add("ename->Text,evorname->Text,estrasse->Text,eort->Text,eplz->Text");
Query1->ExecSQL();
}
catch (Exception ex)
{
MessageBox.Show("Folgender Fehler ist aufgetreten: " + ex.Message);
}

So gehts in .net - musst halt mal gucken, wie oder ob du das umstellen musst. So bekommst du dann zumindest schon mal ne MessageBox und kannst den Fehler abfangen.

Und dann überleg dir mal folgendes: Du fügst zweimal etwas zu deiner SQL-Abfrage hinzu... Häng es doch einfach mal hintereinander und überprüfe dann, was falsch läuft. Ich hab da den verdacht, dass vor die zweite Query noch etwas hinzumuss... gibts da nicht etwas wie
Code:
Query1->SQL->Add(" VALUES (ename->Text,evorname->Text,estrasse->Text,eort->Text,eplz->Text)");
in C++?
 
Zuletzt bearbeitet:
ich glaub zwar nicht, das das hier nochmal jemand liest, oder das das thema noch aktuell ist, aber der fehler liegt darin, das du diese "ename->Text" (was warscheinlich sowas wie ein TEdit o.ä. ist, ne?) nicht einfach mit in den string des querys rein schreiben kannst!
dafür brauchst du parameter:

Code:
 Query2->Close();
 Query2->SQL->Clear();
 Query2->SQL->Add("select * from projekte where kunde=:1;");
 Query2->ParamByName("1")->AsString=Edit1->Text;
 Query2->Open();

das ist einfach mal ein ausschnitt aus einem meiner programme, vieleicht kannste anhand dessen nachvollziehen (oder vieleicht ist das ein ausreichender denkanstoß), wie dein code aussehen müsste!
wichtig ist, dass du in der eigentlichen sql anweisung mit diesen variablen arbeiten muss z.b. ":1" oder ":test" .... wie auch immer. dann musst du mit "ParamByName("1")->AsString=..." oder meintwegen "ParamByName("test")->AsInteger" diesen variablen die werte zuweisen!

wenn du's einmal raus hast, ist das ganz einfach...
... in diesem sinne...

Edit:

und das mit dem "Values(...)" was mein vorredner bereits angesprochen hat, darfst du natürlich bei deiner abfrage auch nicht vergessen ;)
 
Zuletzt bearbeitet:
Zurück