Autor Beitrag
jackle32
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 7

Win7
Delphi XE5 Starter, RAD Studio XE7 Pro
BeitragVerfasst: Fr 14.10.16 19:27 
Hallo zusammen,

folgende Situation:
Ich benutze im meinem Projekt die FireDAC Komponenten um auf eine Access-Datenbank zuzugreifen.
Da die Datenbank nicht dauerhaft verbunden sein soll, gebe ich dem Nutzer die Möglichkeit zur Laufzeit die Anmeldung vorzunehmen.
Genau zu diesem Zweck gibt es ja die TFDGUIxLoginDialog Komponente.

In der Hilfe von RAD Studio gibt es folgenden Code:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
try
   FDConnection1.Connected := True;
 except
   on E: EAbort do
     ; // user pressed Cancel button in Login dialog
   on E: EFDDBEngineException do
     case E.Kind of
     ekUserPwdInvalid: ; // user name or password are incorrect
     ekUserPwdExpired: ; // user password is expired
     ekServerGone: ;     // DBMS is not accessible due to some reason
     else                // other issues
     end;
 end;


Funktioniert auch soweit gut (zusätzlich mit den extra aufgeführten Hinweisen).

Mein Problem ist jetzt nur, dass beim drücken des Abbrechen Buttons im Login-Dialog die Exception-Routine gar nicht aufgerufen wird (bei anderen Fehlern, wie falschem Passwort schon), sondern eine FireDAC Exception Meldung kommt.
Die ist erstens sehr kryptisch und zweites brauche ich keine, da ein Cancel ja ein ganz normaler Vorgang ist.

Hat jemand von euch schon mal mit dieser Komponente gearbeitet bzw. den Fehler auch schon mal umschiffen müssen?
Google ist dabei leider auch nicht wirklich hilfreich.

Gruß,
Jack

_________________
Es gibt keine dummen Fragen, nur dumme Antworten.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 14.10.16 19:47 
- Nachträglich durch die Entwickler-Ecke gelöscht -
jackle32 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 7

Win7
Delphi XE5 Starter, RAD Studio XE7 Pro
BeitragVerfasst: Fr 14.10.16 21:09 
Hallo,

nein ich habe da nix stehen. Habe mal mit ShowMessage() versucht eine Meldung zu generieren, es passiert aber nix.
Mit einem Test per Haltepunkt setzen, habe ich gesehen, dass ich gar nicht in den Exception Bereich bzw. in keinen den ich bis jetzt abfange rein komme.

_________________
Es gibt keine dummen Fragen, nur dumme Antworten.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 14.10.16 23:03 
- Nachträglich durch die Entwickler-Ecke gelöscht -
jackle32 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 183
Erhaltene Danke: 7

Win7
Delphi XE5 Starter, RAD Studio XE7 Pro
BeitragVerfasst: Mo 02.01.17 13:40 
Hallo zusammen,

habe mich nach längerer Zeit nochmal diesem Thema gewidmet und des Rätsels Lösung gefunden.
Hier die Erklärung falls nochmal jemand darüber stolpern sollte.

Wird der Aufgerufenen Dialog mit Abbrechen beendet wird keine Exception der Klasse "EFDDBEngineException" und auch nicht der Klasse "EAbort" erzeugt.
Erzeugt wird eine Exception der Klasse "EFDException"

Somit kann die Fehlermeldung abgefangen werden indem in den except Block aus meinem ersten Post noch der Abschnitt

ausblenden Delphi-Quelltext
1:
2:
3:
4:
on E: EFDException do
begin
  //Was getan werden soll
end;


eingefügt wird.

Hoffe es spart dem ein oder anderen etwas Zeit

Gruß,
Jack

_________________
Es gibt keine dummen Fragen, nur dumme Antworten.

Für diesen Beitrag haben gedankt: mandras