Einzelnen Beitrag anzeigen

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