Entwickler-Ecke

Datenbanken - Fehler beim Erstellen des Cursor-Handle ???


Crowbar - Mi 13.11.02 10:26
Titel: Fehler beim Erstellen des Cursor-Handle ???
Hallo,
ich habe zwei Fragen ...


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 - 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 - 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.


Crowbar - 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 - Mi 13.11.02 12:09

Hallo Crowbar,

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


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


Gruss
Andreas


Crowbar - Mi 13.11.02 12:19

Ja, jetzt klappt es !
Danke! :-)

Crowbar