Autor Beitrag
ofl80
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 16.02.05 13:23 
Hallo,

folgende Prozedur speichert aus einem StringGrid in eine SQL-Datenabnk..

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TSolution.SpeichernClick(Sender: TObject);
var
  SQL_String: String;
begin
    SQL_String := 'UPDATE Liste SET Name = '+chr(39) +grid.Cells[1,1] +chr(39)
                              +', Vorname = '+chr(39) +grid.Cells[2,1] +chr(39)
                              +' WHERE ID = '+grid.Cells[0,1];
    Liste.Active:=false;
    Liste.SQL.clear;
    Liste.SQL.Add(SQL_String);
    Liste.Active:=true;
end;


Dabei gibt es folgendes Problem; Das Programm speichert zwar die Daten, bricht danach aber ab und gibt folgende Fehlermeldung aus:

ausblenden Quelltext
1:
Project Project1.exe raised exception class ENoResultSet with message ‘Error creating cursor handle’. Process stopped. Use Step or Run to continue.					


Bitte um Hilfe.

Vielen Dank

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 16.02.05 13:31 
ofl80 hat folgendes geschrieben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TSolution.SpeichernClick(Sender: TObject);
var
  SQL_String: String;
begin
    SQL_String := 'UPDATE Liste SET Name = '+chr(39) +grid.Cells[1,1] +chr(39)
                              +', Vorname = '+chr(39) +grid.Cells[2,1] +chr(39)
                              +' WHERE ID = '+grid.Cells[0,1];
    Liste.Active:=false;
    Liste.SQL.clear;
    Liste.SQL.Add(SQL_String);
    Liste.Active:=true;
end;


Hallo und :welcome:

ein typischer Standard-Fehler.
Bei Update, Insert, Delete musst du:
ausblenden Delphi-Quelltext
1:
Liste.ExecSQL;					

schreiben.
Nur bei Select geht das mit:
ausblenden Delphi-Quelltext
1:
2:
3:
Liste.Active := True;
//einfacher ist:
Liste.Open;
ofl80 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 16.02.05 13:40 
Uups... Vielen Dank!
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6393
Erhaltene Danke: 147

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 16.02.05 13:42 
Dein anderes Problem:
Du hast vermutlich noch andere Elemente (TDBEdit, TDBGrid,...) mit der DataSource verknüpft. Diese zeigt auf deine TQuery.
Diese Elemente benötigen aber ein Liste.Open.
Du solltest für dein Update eine Extra-Query verwenden.