Entwickler-Ecke

Datenbanken - ADO Zugriff per SQL-DELETE Funktion


dm - Mo 14.10.02 09:18
Titel: ADO Zugriff per SQL-DELETE Funktion
Ich greife per ADO und Microsoft.Jet.OLEDB.4.0 auf eine ACCESS Datenbank zu

Mit der SQL Anweisung :

DELETE * FROM tabellenname

...möchte ich die Datensätze löschen. Wenn ich den Befehl ausführe, bekomme ich jedoch folgende Fehlermeldung :

"Der aktuelle Provider unterstützt nicht die Wiedergabe mehrerer Recordsets bei einer einzelnen Ausführung"

und wenn man OK klickt kommt :

"ADOQuery1 : CommandText gibt keine Ergebnismenge zurück" :shock:


Der Witz dabei ist --> Die Operation wird korrekt ausgeführt!! Er löscht wie gewünscht die Datensätze, bloß die Fehlermeldung zeigt er trotzdem an.

Weiss jemand wie ich das Problem lösen kan oder die Fehlermeldungen unterdrücken kann ??

Gruß DM


LCS - Mo 14.10.02 10:06

Hi
Korrekterweise müsste die Anweisung lauten:

Quelltext
1:
DELETE FROM Tabellenname                    

Also ohne den Stern, denn einzelne Felder kannst du sowieso nicht löschen. Probier mal, ob die Meldung dann immer noch kommt.

Gruss Lothar


Alfons-G - Mo 14.10.02 17:15

Für alle Query-Komponenten, ob BDE, ADO oder native gilt:
SQL-Befehle, welche keine Datenmenge (Recordset) zurücklieferen, dürfen nicht mit open ausgeführt werden, sondern nur mit ExecSQL, bzw. dem entsprechenden Äquivalent der jeweiligen Komponente.
Die Fehlermeldung
Zitat:
ADOQuery1 : CommandText gibt keine Ergebnismenge zurück
kommt deshalb, weil bei Delete kein Datenbankcursor zurückgeliefert wird.

Schau mal in der Delphi-Hilfe zu diesem Thema nach, da ist es knapp, aber ausreichend erläutert.

:idea:


LCS - Di 15.10.02 10:04

Hi
Alfons G hat vollkommen recht.
dm hat folgendes geschrieben:

"ADOQuery1 : CommandText gibt keine Ergebnismenge zurück"

Hab ich glatt überlesen. Peinlich. :oops: