DELETE mit AdoQuery bringt Fehlermeldung
-
Hallo, ich habe das problem das ich beim Auslesen einer Datenbank (Access) mit einer ADOQuery Ko. zu viele rheihen selektiere.(bekomme Fehlermeldung) Und zwar will ich nach dem selectieren mit der Funktion Delete() Daten nach einem bestimmten Kriterium löschen. Ich kann dabei mehrere Tausend/zehntausend Rheihen haben. Wieviele Rheihen kann die Query K. eigentlich fassen?
Um dieses Problem zu umgehen, könnte ich eigentlich direkt mit einem SQL Befehl (Delete) in der Datenbank löschen. Der Haken dabei ist nur, aus irgendeinem Grund verweigert meine DB die Ausführung und bringt statt dessen Fehlermeldungen. Der Code muss aber stimmen, weil select kann ich problemlos durchführen.
der Code mit Delete lautet bei mir so:Main->ADOQuery1->Close(); Main->ADOQuery1->SQL->Clear(); Main->ADOQuery1->SQL->Add("DELETE * FROM Tabelle1 WHERE Typ =" + tmp); Main->ADOQuery1->ExecSQL();fehlermeldung:
EAccessViolation, Zugriffsverletzung in Adresse ... bei Modul msado15.dll. Schreiben von Adresse ...
was ist die Ursache?weiß jemand woran das liegen kann?
Ich weiß nahmlich nicht mehr wie ich die Daten sonst löschen kann!
bitte Helft mir!!! Es ist dringendmfg
-
Kann diverse Ursachen haben... Ich kann mühelos alle Datensätze aus dem 'Artikelkonto' unserer informix-DB selektieren (z.Zt. ca. 1,2 Mill. DS).
Verusch es mal mit einem TADOCommand oder TADODataSet
Zu der Delete-Anweisung selbst. Das * gehört da nicht rein. Abhänggig vom Datentyp des Feldes Typ, muss dieses eventuell noch in Anführungszeichen gesetzt werden. Es ist nicht notwendíg, aber ich habe mir angewöhnt, in SQL-Anweisungen sehr ausgiebig zu klammern.
DELETE FROM Tabelle WHERE (Typ = "zu löschender Typ")
-
Scooby schrieb:
der Code mit Delete lautet bei mir so:
Main->ADOQuery1->Close(); Main->ADOQuery1->SQL->Clear(); Main->ADOQuery1->SQL->Add("DELETE * FROM Tabelle1 WHERE Typ =" + tmp); Main->ADOQuery1->ExecSQL();Es könnte am SQL-Statement liegen. Versuchs mal mit:
Main->ADOQuery1->SQL->Add("DELETE FROM Tabelle1 WHERE Typ =" + tmp); // Kein Feldqualifier (*) angeben!Access hat einen etwas merkwürdigen Dialekt. Aber wenn man brav den Standart nimmt, klappts meist.
-
Danke für die Antworten, Ich Habe es mit Command Text hinbekommen :-),
komischerweise hat er da das Statement mit und ohne * genommen und richtig ausgeführt! (Aber manche Sachen muss man ja nicht unbedingt verstehen, besonderst nicht wenn es von Microsoft ist, grins!)