Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Verbindungswiederherstellung mit Firebird, FibPlus (https://www.delphipraxis.net/25856-verbindungswiederherstellung-mit-firebird-fibplus.html)

djmasi 13. Jul 2004 22:00


Verbindungswiederherstellung mit Firebird, FibPlus
 
Hab leider ein kleines Problem:

Firebird 1.5...läuft
Verbindung zu Server...steht
lesen/schreiben...geht
Verbindung unterbrochen...hier hakts noch

Hab den Beispielcode von FibPlus (connectionlost) ausprobiert und der geht auch.
Aber: hab viele Abfragen, wo ich auch sortiere. Da kommt es zu Fehlern, da im worst case gerade beim Starten des sortierens die Verbindung weg sein kann. Die DataSet wird ja geschlossen für die Abfrage (SQL ändern). Und beim öffnen crasht's dann, und mein Grid ist leer. Wie kann ich das am günstigsten umgehen?

vielleicht noch wissenswert: OnDatabaseLostConnect -> Actions := laWaitRestore

Delphi-Quellcode:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
  SelectSQL: String;
  Flags: DWORD;
begin
  //Netwerkkabel drinnen?
  if IsNetworkAlive(Flags) then //importiert aus sensapi.dll
  begin
    //DB da?
    if not DataBase.Connected then
      try
        DataBase.Connected:=true
      except
        exit
      end;
    //wenn ja
    if Database.Connected then
    begin
      SelectSQL := 'select * from "GENRE" order by ';

      //falls Grid doch leer und kein Titel
      if Column.Title.Caption <> '' then
        SelectSQL := SelectSQL + Column.Title.Caption
      else
        SelectSQL := SelectSQL + 'ID';

      //Auf-/Absteigend sortieren
      if sortasc then
        SelectSQL := SelectSQL + ' ASC'
      else
        SelectSQL := SelectSQL + ' DESC';
      sortasc := not sortasc;

      //SQL ändern und Abfrage ausführen
      CompaniesDataSet.Close;
      CompaniesDataset.SelectSQL.Clear;
      CompaniesDataset.SelectSQL.Add(SelectSQL);
      CompaniesDataSet.Open;
    end;//Database.connected
  end
  else
    ShowMessage('No Connection');
end;
Danke :-D

Hansa 13. Jul 2004 22:32

Re: Verbindungswiederherstellung mit Firebird, FibPlus
 
Zitat:

Zitat von djmasi
Aber: hab viele Abfragen, wo ich auch sortiere. Da kommt es zu Fehlern, da im worst case gerade beim Starten des sortierens die Verbindung weg sein kann.

Inwiefern kann da die Verbindung plötzlich weg sein, beim Sortieren ?? Wer oder was soll denn so etwas machen wollen ?

djmasi 13. Jul 2004 22:39

Re: Verbindungswiederherstellung mit Firebird, FibPlus
 
Zitat:

Zitat von Hansa
Inwiefern kann da die Verbindung plötzlich weg sein

Hab zum Beispiel zu Hause WLAN, und andere Leute bestimmt auch. Da kann das vorkommen :mrgreen:
Außerdem ist es ja nur für den worst case. Ist die Verbindung länger als 1 Minute weg, soll es auf lokale DB umsteigen

djmasi 14. Jul 2004 12:55

Re: Verbindungswiederherstellung mit Firebird, FibPlus
 
Ok ich merk schon, die Beteiligung hält sich in Grenzen. :?

Egal, vielleicht formuliere ich die Frage mal so: Wie stelle ich sicher, dass bei einem Ausfall der Verbindung zur Datenbank (lokal/remote) ich trotzdem weiterhin mit den Daten arbeiten kann?

Wegen lokal: der Server könnte ja crashen (zum Beispiel)

:coder: Ich probier weiter...

justify 20. Jun 2005 11:02

Re: Verbindungswiederherstellung mit Firebird, FibPlus
 
Zitat:

Zitat von djmasi
Delphi-Quellcode:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
  SelectSQL: String;
  Flags: DWORD;
begin
  //Netwerkkabel drinnen?
  if IsNetworkAlive(Flags) then //importiert aus sensapi.dll
  begin
    ...
  end
  else
    ShowMessage('No Connection');
end;

Mal eine Frage: Die Abfrage IsNetworkAlive(Flags) usw. stellst Du da. Aber wieso zeigt er es mir in der Programmierhilfe nicht an? Was hast Du denn da eingebaut, damit Du diese Abfrage einbinden konntest? Das würde mich mal brennend interessieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:36 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