AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Verbindungswiederherstellung mit Firebird, FibPlus
Thema durchsuchen
Ansicht
Themen-Optionen

Verbindungswiederherstellung mit Firebird, FibPlus

Ein Thema von djmasi · begonnen am 13. Jul 2004 · letzter Beitrag vom 20. Jun 2005
Antwort Antwort
djmasi

Registriert seit: 9. Jun 2004
Ort: Leipzig
105 Beiträge
 
Delphi 7 Enterprise
 
#1

Verbindungswiederherstellung mit Firebird, FibPlus

  Alt 13. Jul 2004, 22:00
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
Thomas Maßmann
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: Verbindungswiederherstellung mit Firebird, FibPlus

  Alt 13. Jul 2004, 22:32
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 ?
Gruß
Hansa
  Mit Zitat antworten Zitat
djmasi

Registriert seit: 9. Jun 2004
Ort: Leipzig
105 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Verbindungswiederherstellung mit Firebird, FibPlus

  Alt 13. Jul 2004, 22:39
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
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
Thomas Maßmann
  Mit Zitat antworten Zitat
djmasi

Registriert seit: 9. Jun 2004
Ort: Leipzig
105 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Verbindungswiederherstellung mit Firebird, FibPlus

  Alt 14. Jul 2004, 12:55
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)

Ich probier weiter...
Thomas Maßmann
  Mit Zitat antworten Zitat
justify
(Gast)

n/a Beiträge
 
#5

Re: Verbindungswiederherstellung mit Firebird, FibPlus

  Alt 20. Jun 2005, 11:02
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.
  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 07:09 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