ZConnection Fehler abfangen

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
mori
Beiträge: 53
Registriert: Di 24. Okt 2006, 08:31
OS, Lazarus, FPC: Winux (L 1.1.xy FPC 2.7.1.z)
CPU-Target: xxBit
Wohnort: Mixdorf
Kontaktdaten:

ZConnection Fehler abfangen

Beitrag von mori »

Hallo zusammen,
wie fange ich am sichersten den Fehler ab, wenn der Server nicht erreichbar ist?

Code: Alles auswählen

try
  ZConnection1.Connect;
except
  //hier kommt die Exception erstmal nicht an! siehe unten!
end;
Bei fehlendem Server sehe ich die Exception nur, wenn ich im Windows-Taskmanager
auf "Wechsle zu Task" klicke! Hier kann ich dann mit "Cancel" die App abschiessen.
Mit "OK" lande ich im except-Block der App...

Wer hat einen guten Tip, wie ich den Fehler direkt in der App abfangen kann?

MfG Th. Moritz

MmVisual
Beiträge: 1579
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: ZConnection Fehler abfangen

Beitrag von MmVisual »

Bei mir klappt das, ich habe eine Test-Taste:

Code: Alles auswählen

shTest.Brush.Color := clYellow;
  shTest.Refresh;
  Refresh;
  Screen.Cursor := crHourGlass;
  dbTest.Disconnect;
  dbTest.Protocol := cboProtocol.Text;
  dbTest.HostName := edHost.Text;
  dbTest.Port := StrToIntDef(edPort.Text, 0);
  dbTest.Database := edDatabase.Text;
  dbTest.User := edUser.Text;
  dbTest.Password := edPasswort.Text;
  Try
    dbTest.Connect;
    dbTest.Disconnect;
    shTest.Brush.Color := clLime;
    Screen.Cursor := crDefault;
  Except
    dbTest.Disconnect;
    shTest.Brush.Color := clRed;
    Screen.Cursor := crDefault;
  end;
EleLa - Elektronik Lagerverwaltung - www.elela.de

mori
Beiträge: 53
Registriert: Di 24. Okt 2006, 08:31
OS, Lazarus, FPC: Winux (L 1.1.xy FPC 2.7.1.z)
CPU-Target: xxBit
Wohnort: Mixdorf
Kontaktdaten:

Re: ZConnection Fehler abfangen

Beitrag von mori »

MmVisual hat geschrieben:Bei mir klappt das, ich habe eine Test-Taste:
Hallo,
was passiert bei Dir genau, wenn der Server nicht da ist?
Bekommst Du eine MessageBox mit der Exception zu sehen,
bevor Du wieder in Deiner App landest?

Meine MessageBox versteckt sich irgendwo hinterm Desktop und die sehe ich erst,
wenn ich per TaskManager auf meine App wechsle!

Mir waere viel lieber, wenn ich selbst eine ShowMessage oeffnen kann und mit "OK"
die Anwendung abschiesse. Dazu komme ich aber garnicht erst :-(

MfG Th. Moritz

MmVisual
Beiträge: 1579
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 4 FPC 3.2.2)
CPU-Target: 32/64Bit

Re: ZConnection Fehler abfangen

Beitrag von MmVisual »

Beim meiner App wird die Initialisierung in FormCreate() ausgefügrt, aber die DB wird nicht geöffnet.
In Form OnActivate wird ein Timer mit 10ms gestartet.

Damit zeigt sich die ganze EXE, alle Elemente sind nun blockiert

Der Timer erst öffnet die Datenbank und dann werden alle Elemente freigegeben.
Wenn die DB nicht da ist, gibt es ein Log Eintrag und die EXE öffnet die Log-Ansicht.

Ist zwar etwas Arbeit das ordentlich zu proggen, klappt aber sicher.

Hier gibt es Infos zu meiner EXE:
http://www.mikrocontroller.net/topic/236472" onclick="window.open(this.href);return false;
(EleLa Elektronik Lagerverwaltung, SQLite, MySQL und PostgreSQL, Win/Linux werden unterstützt)
EleLa - Elektronik Lagerverwaltung - www.elela.de

mori
Beiträge: 53
Registriert: Di 24. Okt 2006, 08:31
OS, Lazarus, FPC: Winux (L 1.1.xy FPC 2.7.1.z)
CPU-Target: xxBit
Wohnort: Mixdorf
Kontaktdaten:

Re: ZConnection Fehler abfangen

Beitrag von mori »

MmVisual hat geschrieben:Beim meiner App wird die Initialisierung in FormCreate() ausgefügrt, aber die DB wird nicht geöffnet.
In Form OnActivate wird ein Timer mit 10ms gestartet.
Hallo MmVisual,
genau das war die Loesung! Mein Timer startet nun nach 2sek. den Connect und alles rennt wie gewuenscht.
Bei fehlendem Server erscheint zwar in der TitelZeile der App fuer eine Weile <keine Rueckmeldung>
das ist mir im Moment aber egal. Zumindest kann ich die App nun sauber beenden.

Vielen Dank und einen schoenen Sonntag! :)

MfG Th. Moritz

Antworten