AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Connection Exception nach Ruhezustand / Sleep

Connection Exception nach Ruhezustand / Sleep

Ein Thema von fabi17 · begonnen am 22. Apr 2021 · letzter Beitrag vom 25. Apr 2021
Antwort Antwort
Seite 1 von 2  1 2   
fabi17

Registriert seit: 1. Mai 2017
44 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Connection Exception nach Ruhezustand / Sleep

  Alt 22. Apr 2021, 09:26
Hallo zusammen,

ich habe ein relativ großes Programm zum Erfassen von Daten mit mehreren Usern geschrieben. Nun kommt es ab und zu vor, dass ein User das Programm über Nacht offen lässt und am nächsten Morgen, nachdem der PC dann aus dem Standby erwacht, dann eine Exception (ADO) mit Fehler beim Verbinden bekommt sobald er im Programm etwas macht. Was ist hierzu der beste Weg, die Exception abzufangen und die Verbindung wiederherzustellen?

Lg
Fabi
  Mit Zitat antworten Zitat
hoika

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

AW: Connection Exception nach Ruhezustand / Sleep

  Alt 22. Apr 2021, 09:42
Hallo,

Delphi-Quellcode:
try
  CheckConnection;
except?
  Reconnect;
end;
Heiko
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.172 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Connection Exception nach Ruhezustand / Sleep

  Alt 22. Apr 2021, 09:56
Wenn es nur definierte Stellen gibt, an denen das Programm sich befinden kann, kannst du testen + reconnecten. Sonst müsstest du vor jedem Zugriff (zB DataSet.Next) auf die DB testen + das geht nicht immer, weil damit auch der Context verlorengeht. Vielleicht wäre es eine Option, das Programm bei Inaktivität zu schließen? Oder wenigstens auf einen definierten Punkt zurückzufahren?
  Mit Zitat antworten Zitat
fabi17

Registriert seit: 1. Mai 2017
44 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: Connection Exception nach Ruhezustand / Sleep

  Alt 22. Apr 2021, 10:11
Hi,

ich hatte mir eine andere (globale) Lösung als try, except erhofft (ggf. mit timer?), da ich sonst in dutzende Prozeduren reinspringen muss...
  Mit Zitat antworten Zitat
hoika

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

AW: Connection Exception nach Ruhezustand / Sleep

  Alt 22. Apr 2021, 10:14
Hallo,
vor jeder Methode ein TryConnect machen.
Heiko
  Mit Zitat antworten Zitat
fabi17

Registriert seit: 1. Mai 2017
44 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: Connection Exception nach Ruhezustand / Sleep

  Alt 22. Apr 2021, 10:21
Wenn es nur definierte Stellen gibt, an denen das Programm sich befinden kann, kannst du testen + reconnecten. Sonst müsstest du vor jedem Zugriff (zB DataSet.Next) auf die DB testen + das geht nicht immer, weil damit auch der Context verlorengeht. Vielleicht wäre es eine Option, das Programm bei Inaktivität zu schließen? Oder wenigstens auf einen definierten Punkt zurückzufahren?
hatte auch überlegt, das Programm nachts einfach zu schließen. Aber wenn der User noch Forms offen hat und ich die exe von außerhalb schließe, wird das Fromclose Event nicht ausgeführt, oder?
  Mit Zitat antworten Zitat
fabi17

Registriert seit: 1. Mai 2017
44 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#7

AW: Connection Exception nach Ruhezustand / Sleep

  Alt 22. Apr 2021, 10:22
Hallo,
vor jeder Methode ein TryConnect machen.
danke, wenn es keine andere Lösung gibt, muss ich das so machen...
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.330 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Connection Exception nach Ruhezustand / Sleep

  Alt 22. Apr 2021, 10:50
Das Problem kommt mir bekannt vor, wenn auch in anderer Konstellation. Bei uns gibt es eine Anwendung, die im mobilen Arbeiten genutzt wird. Es besteht daher immer das Risiko, dass die Verbindung verloren geht. Also gilt das Prinzip, keine datensensitiven Komponenten zu verwenden. Die DB-Verbindung wird nur genutzt, wenn es erforderlich ist. Sie wird zwar nach Möglichkeit offen gehalten, aber wenn die weg ist, kann halt nicht aktualisiert/gespeichert werden. Im schlimmsten Fall gehen die Arbeiten zwischen 2 Kontrollpunkten im Programm verloren.

1. Du könntest dein Programm ähnlich anpassen, was ziemlich viel Aufwand sein könnte.
2. Du baust an allen wichtigen Stellen eine Connect-Prüfung ein und reagierst mit einem Reconnect. Die datensensitiven Elemente verlieren dann aber auch die Daten. Übrigens muss ein Reconnect auch nicht immer funktionieren.
3. Du machst den Anwendern klar, dass eine Datenbankanwendung ein Time-Out kriegen kann. Die Konsequenzen sind dann eben, dass die zuletzt erfassten Daten futsch sind. Wenn die Daten so dramatisch wichtig sind, sollten die sowieso zu ende erfasst werden. Wenn sie nicht so wichtig sind, dürfte es auch kein Drama sein, diese nochmal zu erfassen.

Im schlimmsten Fall kann es sogar passieren, dass die tägliche Datenbanksicherung blockiert wird, wenn die Anwendung noch aktiv ist. So einen Fall hatten wir vor 2 Jahren auch mal.
Ich würde einen Timer einbauen, der die Verbindung prüft und gegebenenfalls die Anwendung beendet. Man kann dann ja noch eine Warnung ausgeben, dass die Anwendung in x Minuten wegen Inaktivität/Verbindungsfehler geschlossen wird.

Aber wenn der User noch Forms offen hat und ich die exe von außerhalb schließe, wird das Fromclose Event nicht ausgeführt, oder?
Du kannst ja im Programm durchgehen, welche Forms offen sind und diese dann über ein Close schließen. Das FormClose müsste dann auch ausgeführt werden.
Peter

Geändert von Jasocul (22. Apr 2021 um 10:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Connection Exception nach Ruhezustand / Sleep

  Alt 22. Apr 2021, 11:11
Wir reagieren auf die Windows-Events und beenden die DB-Verbindung.
Beim wiederaufwachen des REchners wird die Verbindung wieder aufgebaut.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
alex517

Registriert seit: 23. Nov 2004
Ort: Bernau b. Berlin
273 Beiträge
 
Delphi XE5 Enterprise
 
#10

AW: Connection Exception nach Ruhezustand / Sleep

  Alt 22. Apr 2021, 14:11
Wir reagieren auf die Windows-Events und beenden die DB-Verbindung.
Beim wiederaufwachen des REchners wird die Verbindung wieder aufgebaut.
Auf welche Windows-Events reagiert ihr?

Alex
Alexander
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:20 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