AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken ADO Verlorene Verbindung wieder finden
Thema durchsuchen
Ansicht
Themen-Optionen

ADO Verlorene Verbindung wieder finden

Ein Thema von arnof · begonnen am 28. Dez 2015 · letzter Beitrag vom 30. Dez 2015
Antwort Antwort
arnof

Registriert seit: 25. Apr 2013
1.252 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

AW: ADO Verlorene Verbindung wieder finden

  Alt 29. Dez 2015, 17:23
@Perlsau: nehme nicht alles immer persönlich

Nochmals zum Verständnis, mein Problem:

1. einmal kurz Verbindung gestört, dann wird jegliche weitere Verbindung mit dem gleichen ConnectString verweigert!!!!!!!

Lösung hier bei der ADO Connection:

2. Connected auf False setzen (Trennen)

3. ConnectString Leeren

4. ConnectString wieder auf ursprung setzen

5. Connected auf True setzt nun geht wieder alles.

Schritte 2-5 möchte ich nicht, das ist meine Frage/ mein Problem!

Im Programm nach einem Hänger muss es genau an der Stelle weitergehen wo es gehangen hat!

Durch die Vielzahl der Möglichkeiten, was der user gerade treibt xxx DataSet auf (MDI-Fenstern) besteht keine Möglichkeit genau das wieder zur Ansicht zu bringen was gerade in der Bearbeitung ist.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.173 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: ADO Verlorene Verbindung wieder finden

  Alt 29. Dez 2015, 17:47
Wenn jetzt die Verbindung erst nach löschen und wieder setzen des Connectionstrings funktioniert würde das m.E. darauf hin deuten das in diesem Fehlerfall die dbGo-Implmentierung (Der VCL-Teil muss nach invervention so genannt werden) nicht mehr synchron mit den ADO/OLEDB-Status. Oder alternativ (was ich nicht glaube) ist hier noch ein ConnectionPool aktiv der dafür sorgt das eigentlich kaputte Connnections weiter verwendet werden.

Wenn du deine MDI-Formuarle wieder genau an die Stelle bringen willst musst du den Zustand sichern (Bookmark auslesen und nach Reconnect wieder setzen).
Falls das nicht klappt den Primärschlüsselwert des aktuell markierten Datensatzes lesen und wieder setzen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.252 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: ADO Verlorene Verbindung wieder finden

  Alt 29. Dez 2015, 20:59
Wenn jetzt die Verbindung erst nach löschen und wieder setzen des Connectionstrings funktioniert würde das m.E. darauf hin deuten das in diesem Fehlerfall die dbGo-Implmentierung (Der VCL-Teil muss nach invervention so genannt werden) nicht mehr synchron mit den ADO/OLEDB-Status. Oder alternativ (was ich nicht glaube) ist hier noch ein ConnectionPool aktiv der dafür sorgt das eigentlich kaputte Connnections weiter verwendet werden.
Genau diesen ConnectionPool will ich irgendwie zurücksetzen, da war meine Frage, ob das schon mal jemand hin bekommen hat.

PS: ClientDataSet will ich nicht da es hier nicht um eine Neuentwicklung geht, sondern um ein bestehendes Produkt was super läuft. Ich will ja nur die Netzwerkprobleme beim Kunden umschiffen, auf die ich keinen Einfluss habe. Wenn das Prg 2-3 sec hängt und dann weiter läuft ist alles save. Nur wenn man es erst per Taskmanager Killen muss, weil ein DataSet nach dem andern wegfliegt ist das nicht gut.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: ADO Verlorene Verbindung wieder finden

  Alt 29. Dez 2015, 21:02
Ah, verstanden. Gibt's keinen Event, in den man sich einklinken kann (zur Not mit TTimer), um dann irgendwie von Hinten durch die Brust ins Auge ein Reconnect durchzuführen?
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.252 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: ADO Verlorene Verbindung wieder finden

  Alt 29. Dez 2015, 21:51
Ah, verstanden. Gibt's keinen Event, in den man sich einklinken kann (zur Not mit TTimer), um dann irgendwie von Hinten durch die Brust ins Auge ein Reconnect durchzuführen?
Ich weiss nicht was das soll, ich bitte doch darum nicht nur dumm rumzulabern, wenn kann davon keine Ahnung hat und einfach keine Lösung kennt dann sollte man sich doch einfach zurückhalten.
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.252 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: ADO Verlorene Verbindung wieder finden

  Alt 29. Dez 2015, 22:34
So für die die es interessiert und irgendwann diesen Beitrag bei Google finden:

Lösung ist ganz einfach und auch via VPN Verbindung getestet:

2. Connection drauf, diese muss Connected=False sein

Wenn es zum Netzproblem kommt und das Netz wieder da ist und es kommt trotzdem "Fehler beim Verbinden", dann der 2. Connection Connected auf False und ConnectString der ersten Übergeben Connected auf True setzen, wenn die Verbindung steht, so kann bei einem geöffneten und sogar editierten ADODataset die Connection geändert werden. Diese also auf die 2'te setzen, danach gehen auch alle Updates und inserts automatisch durch .....

Danke fürs helfen

Geändert von arnof (29. Dez 2015 um 22:39 Uhr) Grund: Gelöst
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#7

AW: ADO Verlorene Verbindung wieder finden

  Alt 30. Dez 2015, 07:54
...wenn kann davon keine Ahnung hat und einfach keine Lösung kennt dann sollte man sich doch einfach zurückhalten.
Ich finde deine Antwort auf einen Tipp sehr entlarvend.

Übrigens: Dein Schlips schleift auf dem Boden.
  Mit Zitat antworten Zitat
Benutzerbild von TRomano
TRomano

Registriert seit: 24. Nov 2004
Ort: Düsseldorf
190 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: ADO Verlorene Verbindung wieder finden

  Alt 30. Dez 2015, 08:35
Letztlich muss er erst einmal schauen, ob er ein Hardware-Problem hat. Wenn das, so gut es geht, ausgeschlossen ist kann er sich an dann eventuell noch vorhandene Software-Probleme machen.
Gibt es bei der ADO-Connection (habe ich schon ewig nicht mehr benutzt) kein Event wie "OnConnectionLost" (UniDAC), dass man dort auf das Verlieren einer Connection reagieren kann ? Wenn nicht müsste man wirklich in einem bestimmten Intervall die Verbindung abfragen und entsprechend reagieren.
Thomas Forget
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#9

AW: ADO Verlorene Verbindung wieder finden

  Alt 29. Dez 2015, 17:55
Wenn eine ADO-Verbindung kaputt ist, ist sie kaputt.

Die Schritte 2 und 5 wirst zu auf jeden Fall benötigen.

Eine Reanimation einer gestörten Verbindung, mit Fortsetzung im Zustand vor der Störung, ist nicht möglich.

DataSets benötigen eine dauerhaft, ungestörte Verbindung.
Nach einem Verbindungsverlust ist eine Reanimation und/oder ungestörte Fortführung im aktuellen Zustand nicht möglich.

Bei einem Verbindungsverlust bleibt Dir nichts anderes übrig, als Dir für jeden Dataset die aktuelle Position des Datensatzzeigers... zu merken und nach dem Schließen aller DataSets beim Öffnen an diese Positionen zurückzukehren.

Alternative:

Alle Daten im Client vorhalten und nur Änderungen bei Bedarf an die Datenbank weitergeben bzw. von dort holen.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#10

AW: ADO Verlorene Verbindung wieder finden

  Alt 29. Dez 2015, 18:57
Hmmm. Du arbeitest also mit Datasets. Nun gut. Nimm halt ClientDataSets (wurde schon erwähnt). Bei einem Refresh geht das über eine zentrale Routine, die dann eben das Reconnect-Gedöns implementiert.

Jetzt kann man sich natürlich hinstellen und sagen: "Ich will aber, das das ohne Umschreiben trotzdem funktioniert". Klar. Kann man. Bringt nur nix.
  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 13:59 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