AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken ADO - Refresh-Problem oder so
Thema durchsuchen
Ansicht
Themen-Optionen

ADO - Refresh-Problem oder so

Ein Thema von Rainer Wolff · begonnen am 8. Jun 2010 · letzter Beitrag vom 14. Jun 2010
Antwort Antwort
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
318 Beiträge
 
Delphi 10.4 Sydney
 
#1

ADO - Refresh-Problem oder so

  Alt 8. Jun 2010, 10:19
Datenbank: Access • Version: 2003 • Zugriff über: ADO
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:
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;
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.

Gruß Rainer

Geändert von mkinzler ( 8. Jun 2010 um 10:22 Uhr) Grund: Was habt ihr alle gegen den Delphi-Tag
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: ADO - Refresh-Problem oder so

  Alt 8. Jun 2010, 10:45
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
Heiko
  Mit Zitat antworten Zitat
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
318 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: ADO - Refresh-Problem oder so

  Alt 8. Jun 2010, 10:58
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
Doch, genau das mache ich, eine procedure weiter beim einfügen von Datensätzen in selbige Tabelle. Ich werde das mal ändern, aber warum gibts damit Probleme?

Rainer
  Mit Zitat antworten Zitat
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
318 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: ADO - Refresh-Problem oder so

  Alt 8. Jun 2010, 13:40
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
Doch, genau das mache ich, eine procedure weiter beim einfügen von Datensätzen in selbige Tabelle. Ich werde das mal ändern, aber warum gibts damit Probleme?

Rainer
Das war aber auch nicht die Lösung des Problems. Ich habe eine separate Query fürs Löschen eingebaut, der Fehler kommt aber wieder.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: ADO - Refresh-Problem oder so

  Alt 8. Jun 2010, 13:46
Kannst du zwischendurch mal die Connection zu machen und wieder öffnen? Evtl. mal den Cache der JET-Engine leeren wie hier beschrieben.

Access/JET ist hier teilweise eine Schrottimplementierung die bei externen Zugriff über ADO probleme bereitet.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
318 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: ADO - Refresh-Problem oder so

  Alt 14. Jun 2010, 14:33
Kannst du zwischendurch mal die Connection zu machen und wieder öffnen? Evtl. mal den Cache der JET-Engine leeren wie hier beschrieben.

Access/JET ist hier teilweise eine Schrottimplementierung die bei externen Zugriff über ADO probleme bereitet.
Thread mal wieder nach oben schubs....

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));
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

AW: ADO - Refresh-Problem oder so

  Alt 14. Jun 2010, 18:51
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).
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz