![]() |
Datenbank: Access • Version: 2003 • Zugriff über: ADO
ADO - Refresh-Problem oder so
Hallo,
ich habe eine Delete-Query, die jede Stunde einmal Datensätze aus einer Tabelle löscht, die älter als 4 Tage sind, und die ein Flag gesetzt haben. Jetzt kommt regelmäßig die beim Aufruf die Fehlermeldung: Exception class: EOleException Exception message: Datensatz ist gelöscht. Der Quellcode ist eigentlich so simpel, dass nicht viel Fehler drin sein kann:
Delphi-Quellcode:
Es muss ja irgendwie ein Refresh-Problem sein, aber ich weiss nicht, was für einen Befehl ich versuchen könnte, vor allem, da ich das Problem hier nicht nachvollziehen kann, sondern eben nur der Kunde davon berichtet.
procedure TdmProdProtokollBasis.tmr1Timer(Sender: TObject);
const DaysToKeep=4; var DelDate:TDateTime; begin query1.SQL.Text:='Delete from tbl_rueckmelden where ControlKey=:wert and Datum<:datum'; query1.Parameters.ParamByName('wert').Value:=true; DelDate:=Date-DaysToKeep; query1.Parameters.ParamByName('datum').Value:=DelDate; query1.ExecSQL; end; Gruß Rainer |
AW: ADO - Refresh-Problem oder so
Hallo,
hoffentlich benutzt du query1 nicht noch an einer anderen Stelle. Ich würde hier mal eine eigene Query nehmen, die auch nur hier benutzt wird (lokale Variable). Heiko |
AW: ADO - Refresh-Problem oder so
Zitat:
Rainer |
AW: ADO - Refresh-Problem oder so
Zitat:
|
AW: ADO - Refresh-Problem oder so
Kannst du zwischendurch mal die Connection zu machen und wieder öffnen? Evtl. mal den Cache der JET-Engine leeren wie
![]() Access/JET ist hier teilweise eine Schrottimplementierung die bei externen Zugriff über ADO probleme bereitet. |
AW: ADO - Refresh-Problem oder so
Zitat:
Auch dieses habe ich inzwischen erfolglos probiert:
Delphi-Quellcode:
query2.SQL.Text:='Delete from tbl_rueckmelden where ControlKey=:wert and Datum<:datum';
query2.Parameters.ParamByName('wert').Value:=true; DelDate:=Date-DaysToKeep; query2.Parameters.ParamByName('datum').Value:=DelDate; query2.ExecSQL; FlushCache; end; procedure TdmProdProtokollBasis.FlushCache; var aJet : IJetEngine; aConn : _Connection; begin // ADOConnection1.Connected := True; aJet := CoJetEngine.Create; aConn := ADODB_TLB._Connection(Connection.ConnectionObject); aJet.RefreshCache(ADODB_TLB._Connection(aConn)); |
AW: ADO - Refresh-Problem oder so
Hast du überall die CursorLocation auf clUseServer stehen?
Falls nicht, führt dies zu einem "Double-Buffering" Effekt. Hast du nur ein einziges Connection-Objekt am Start? Falls nicht gibt das bei der Jet-Engine seltsame Effekte: Connection A bemerkt Veränderungen an der DB, die über Connection B gemacht wurden erst nach mehr als 5 Sekunden (~Cache-Timeout). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz