Autor Beitrag
Crowbar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 180

WinXP, SP2
D6 Enterprise
BeitragVerfasst: Mi 13.11.02 10:26 
Hallo,
ich habe zwei Fragen ...

ausblenden Quelltext
1:
2:
3:
4:
5:
...
Query.Close;
Query.SQL.Text:='INSERT INTO Test (Name,Vorname) VALUES (''Test1'',''VorTest1'')';
Query.Open;
...


Wird der Befehl Query.Open aufgerufen, erscheint eine Fehlermeldung: "Fehler beim Erstellen des Cursor-Handle" (ENotResultSet)!
Der Eintrag in die Datenbank (*.dbf) wird trotzdem vorgenommen. Aber was hat diese Fehlermeldung zu bedeuten bzw. wie bekomme ich sie weg!?
Meine Datenbank wird in einem DBGrid dargestellt. Wie kann ich erreichen, dass die hinzugefügten Daten, sofort im DBGrid angezeigt werden? Derzeitig werden die neuen Einträge erst beim Hoch- bzw. Herunterscrollen im DBGrid angezeigt. Ein Table.Refresh brachte leider keinen Erfolg!

Wer hat eine Idee? ;-)

Crowbar
Crowbar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 180

WinXP, SP2
D6 Enterprise
BeitragVerfasst: Mi 13.11.02 11:13 
Hallo,
die Fehlermeldung habe ich jetzt wegbekommen :D !
Statt Query.Open habe ich Query.ExecSQL benutzt.
Zitat:
Mit ExecSQL können Sie Anweisungen ausführen, die keinen Cursor auf Daten (wie z.B. INSERT, UPDATE, DELETE oder CREATE TABLE) zurückgeben.

Aber wie aktualisiere ich mein DBGrid ??

Crowbar
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mi 13.11.02 11:16 
Hi
ein Aktivieren einer Query mit Open, setzt eine Ergebnismenge voraus und die hast du bei einem Insert-Befehl eben nicht. Verwende an dieser Stelle einfach ExecSQL anstelle von Open und das Problem ist gelöst.

Gruss Lothar
--------------------
Oops, kam zu spät :?
Wenn das Refresh nix bringt, kannst du einfach mal die Tabelle schliessen und wieder öffnen.

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Crowbar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 180

WinXP, SP2
D6 Enterprise
BeitragVerfasst: Mi 13.11.02 11:42 
Hallo,
ja, Table.Close - Table.Open hat Erfolg gebracht!
Danke! :-)

Doch gleich eine andere Frage.
Ich möchte einen bestehenden Datensatz ändern.
Mit dem Befehl:
Query.SQL.Text:='UPDATE Test set Name = ''Neuer Name''';
werden jedoch alle Namen auf "Neuer Name" geändert.
Irgendwie muss ich doch einen "Cursor" setzen, auf den Datensatz, den ich ändern möchte?!?

Crowbar
ao
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 145

Win XP Prof.
D7 Ent.
BeitragVerfasst: Mi 13.11.02 12:09 
Hallo Crowbar,

du musst das Update-Statement einfach noch um eine Where-Klausel erweitern:

ausblenden Quelltext
1:
UPDATE Test SET Name = "Neuer Name" WHERE Name = "Alter Name"					


Gruss
Andreas
Crowbar Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 180

WinXP, SP2
D6 Enterprise
BeitragVerfasst: Mi 13.11.02 12:19 
Ja, jetzt klappt es !
Danke! :-)

Crowbar