SQL Insert Fehler in Delphi

der sql code:
INSERT INTO kunden (Nr, Name) VALUES (4, ‚Weber‘)
verursacht einen Fehler bei Delphi
Es gibt 2 Edit Felder, in den man Kundenummer und Namen anlegen kann.
Buttonclick verursacht dann das query.sql[0] z. B. auf:
INSERT INTO kunden (Nr, Name) VALUES (4, ‚Weber‘)
…gesetzt wird.
Dann folgt Query.active:=true;
Nun Erschenit eine Fehlermeldung: Cursor Handel Error!
Der Datensatz wird aber in die Tabele geschrieben, wie es auch sein soll.
Der Code ist nach meinem verständnis auch richtig.

Muss ich irgend eine Eigenschaft umstellen?

P.s: auch mein Informatiklehrer konnte keine fehler entdecken und hatte das selbe Problem beim nachprogramieren meines Programmes.

Hallo,

Buttonclick verursacht dann das query.sql[0] z. B. auf:
INSERT INTO kunden (Nr, Name) VALUES (4, ‚Weber‘)
…gesetzt wird.

  1. wie hast du das gemacht?
    Schreibst du query.sql[0] := ‚(Abfrage)‘?
    Dann kann es sein, dass in SQL[1] noch alter Müll rumliegt. Also: Query löschen und dann neu aufbauen mit SQL.Add

  2. wie hast du die Anführungszeichen um ‚Weber‘ gesetzt?

Dann folgt Query.active:=true;

Das ist natürlich falsch. Lies nochmal in der Hilfe zu TQuery nach, wie man eine Abfrage startet, die keine Datensätze zurückliefert (INSERT liefert keine Daten zurück). Dafür gibt es einen extra Befehl.

P.s: auch mein Informatiklehrer konnte keine fehler entdecken
und hatte das selbe Problem beim nachprogramieren meines
Programmes.

Naja, entweder hat der Informatiklehrer doch eher Sport studiert, oder er möchte, dass du das Problem selbst löst.

Gruss, Niels

query.sql[0] ist die einzige Zile die mein Programm verwendet.

  1. wie hast du das gemacht?
    Schreibst du query.sql[0] := ‚(Abfrage)‘?

ganauso!

  1. wie hast du die Anführungszeichen um ‚Weber‘ gesetzt?

Da ich mir nicht zu helfen wuste, habe ich label1.visble:=false und text:=’
also folgt query.sql[0] := (‚INSERT INTO kunden (Nr, Name) VALUES (‘+edit1.text+’,’+label1.caption+edit2.text+lable1.caption+’)’)

Dann folgt Query.active:=true;

Das ist natürlich falsch. Lies nochmal in der Hilfe zu TQuery
nach, wie man eine Abfrage startet, die keine Datensätze
zurückliefert (INSERT liefert keine Daten zurück). Dafür gibt
es einen extra Befehl.

Genau da muss der Fehler liegen. Danke!

P.s: auch mein Informatiklehrer konnte keine fehler entdecken
und hatte das selbe Problem beim nachprogramieren meines
Programmes.

Naja, entweder hat der Informatiklehrer doch eher Sport
studiert, oder er möchte, dass du das Problem selbst löst.

Schon mathe und Inf, er ist übrigens der einzige, der mehr weiß als wie man mit win 95 Excel bedient.
Auf gut deutsch der einzige, der heute noch aktuellen untericht kann.
Bei den Anderen haben wir entweder Automatlerere. Also Theorie Wenn Einwurf 1,50 dann Limo in Ausgabefach…
Der andere ist bei Excel schon überfordert.
Neulich kan von ihm eine Beschwerde an meinen Infolehrere, dass jemand excel deinstalliert hätte. grund: Das Desktopicon wurde gelöscht.

Also so viel zu Thema Lehrer, da bin ich mit meinem voll zufrieden.

gruß Thomas

Hallo,

wie Niels schon schrieb, solltest Du einiges anders machen. Ich gebe Dir mal ein Beispiel:

Query.SQL.Clear; // Stringsliste leeren
Query.SQL.Add( 'INSERT INTO kunden (Nr, Name) VALUES (:Nr, :Name)' );
Query.ParamByName( 'Nr' ).AsInteger := 4;
Query.ParamByName( 'Name' ).AsString := 'Weber';
Try
 Query.ExecSQL;
Except
 on E : Exception do Begin
 MessageDlg( 'Fehler beim speichern: ' + E.Message, mtError, [mbOK], 0 );
 [...]
 End;
End;

Durch die Verwendung von Query.ParamByName brauchst Du Dir z.B. keine Gedanken wegen Anführungszeichen zu machen. Der SQL-Befehl wird dann automatisch richtig zusammengesetzt.

Gruß
Christian