Delphi 2009 Warnung wenn keine Connection
Hallo,
ich habe ein Delphi Programm, welches in einem Firmennetz läuft. Jetzt besteht der Wunsch, eine Fehlermeldung auszugeben, wenn keine Connection zur Datenbank aufgebaut werden kann.
Hat jemand eine Idee, wie man das implementieren kann?
Viele Grüße
milecl
ich habe ein Delphi Programm, welches in einem Firmennetz läuft. Jetzt besteht der Wunsch, eine Fehlermeldung auszugeben, wenn keine Connection zur Datenbank aufgebaut werden kann.
Hat jemand eine Idee, wie man das implementieren kann?
Viele Grüße
milecl
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 189999
Url: https://administrator.de/contentid/189999
Ausgedruckt am: 22.11.2024 um 14:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo,
Ist doch eigentlich ganz einfach. Du gehst zu der Stelle in deinem Delphi Quellcode (Pascal, Object Pascal) wo du die Verbindung zur Datenbank versuchst aufzubauen und schaust welche Rückgabewerte oder Fehler kommen können und reagierst entsprechend mit einer (Desktop) Meldung oder einem (System) LOG Eintrag oder was immer du willst was da passieren soll.
Solltest du gezielte Fragen zu einer Stelle deines Quellcodes haben, kannst du dies ja gezielt hier für Hilfe anfragen
Gruß,
Peter
Ist doch eigentlich ganz einfach. Du gehst zu der Stelle in deinem Delphi Quellcode (Pascal, Object Pascal) wo du die Verbindung zur Datenbank versuchst aufzubauen und schaust welche Rückgabewerte oder Fehler kommen können und reagierst entsprechend mit einer (Desktop) Meldung oder einem (System) LOG Eintrag oder was immer du willst was da passieren soll.
Solltest du gezielte Fragen zu einer Stelle deines Quellcodes haben, kannst du dies ja gezielt hier für Hilfe anfragen
Gruß,
Peter
Hallo,
Das wird wohl sehr schwierig werden, oder? Die zu startende EXE Datei soll erst gestartet werden (Klick durch Anweder) wenn diese auch eine Verbindung zur Datenbank aufbauen kann (könnte). Die EXE Datei soll aber nicht gestartet werden (Klick durch Anwender) wenn die Datenbank nicht verfügbar ist.
Wenn also das starten der EXE Datei durch ein "Klick durch Anwender" erfolgt, wie soll hier also deine EXE Datei wissen das sie starten oder eben nicht starten soll? Um das festzustellen muss aber die EXE Datei gestartet werden, denn wie sonst kann der entsprechende Code (innerhalb der EXE Datei) ausgeführt werden?
Oder wird die EXE Datei durch eine andere Art als "Klick durch Anwender" gestartet?
Denk dran, wir wissen hier nicht was du alles weist. Wir sind hier Blind und Taub und lesen nur was du uns zum Lesen gibst. Und wir wissen auch nicht was du dir denkst oder vorstellst, denn würden wir das wissen könnten wir deine Gedanken lesen und bräuchten nicht zu raten
Du wirst uns entweder noch Informationen liefern müssen, oder selbst deine Frage genauer ausarbeiten, bzw. deine Auftraggeber (Bosse) nach genauerer Information Fragen müssen.
Gruß,
Peter
Das wird wohl sehr schwierig werden, oder? Die zu startende EXE Datei soll erst gestartet werden (Klick durch Anweder) wenn diese auch eine Verbindung zur Datenbank aufbauen kann (könnte). Die EXE Datei soll aber nicht gestartet werden (Klick durch Anwender) wenn die Datenbank nicht verfügbar ist.
Wenn also das starten der EXE Datei durch ein "Klick durch Anwender" erfolgt, wie soll hier also deine EXE Datei wissen das sie starten oder eben nicht starten soll? Um das festzustellen muss aber die EXE Datei gestartet werden, denn wie sonst kann der entsprechende Code (innerhalb der EXE Datei) ausgeführt werden?
Oder wird die EXE Datei durch eine andere Art als "Klick durch Anwender" gestartet?
Denk dran, wir wissen hier nicht was du alles weist. Wir sind hier Blind und Taub und lesen nur was du uns zum Lesen gibst. Und wir wissen auch nicht was du dir denkst oder vorstellst, denn würden wir das wissen könnten wir deine Gedanken lesen und bräuchten nicht zu raten
Du wirst uns entweder noch Informationen liefern müssen, oder selbst deine Frage genauer ausarbeiten, bzw. deine Auftraggeber (Bosse) nach genauerer Information Fragen müssen.
Gruß,
Peter
Hallo,
Und dir ist bewusst das deine Forderung nach
so niemals erfüllt werden kann. (Nicht in diesem universum)
Gruß,
Peter
Und dir ist bewusst das deine Forderung nach
das die exe erst gar nicht startet, wenn keine DB Connection möglich
wie on open oder so ahnlich
Wird es wohl auch in Delphi (Object Pascal) geben. Aber brauchst du das wirklich?Eben das beim Öffnen der exe sofort abgefragt wird, ob die Connection möglich wäre. Sollte das nicht der fAll sein, dann eben eine Fehlermeldung.
Dann tu das doch. Bevor dein Hauptprogramm aufgerufen wird (Hauptmaske / Fenster etc.) kannst du doch eine Abfrage auf deine Datenquelle machen und je nach Erreichbarkeit entweder das Hauptprogramm starten oder eben ein anderes Fenster mit dem Hinweis das die Datenquelle xyz nicht verfügbar sei, einen Eintrag ins LOG schreibst und dem Anwender ein OK Button gibst damit Er/Sie die Anwendung benutzergesteuert beendet. Wo du das in deinem Programm einbaust geht aus deinem nur dir bekannten Quellcode hervor.Gruß,
Peter
Hi!
So arbeitet kein erfahrener Entwickler, man arbeitet normalerweise ereignisorientiert und wertet die Ereignisse aus. Es ist auch völliger Blödsinn den Start einer Exe unterbinden zu wollen. Das geht entweder mit einer zweiten Exe, die vor der eigentlichen Exe gestartet wird oder über eine Batchdatei. Du könntest höchstens nach dem Start der Exe, also zur Laufzeit das Objekt bzw. die Komponente für den Datenbankzugriff erzeugen, die Verbindung prüfen und bei einem negativen Ergebnis der Verbindungsprüfung die Exe wieder beenden. Aber wie gesagt, normalerweise macht man das so eher nicht. Und wenn ich das richtig verstanden habe, sieht das der Kollege Pjordorf ähnlich.
Sei mir nicht böse aber wenn ich solche Threads lese wundert es mich nicht, mit was für Software ich mich manchmal herumärgern muss, wenn ich als reiner Admin unterwegs bin.
mrtux
So arbeitet kein erfahrener Entwickler, man arbeitet normalerweise ereignisorientiert und wertet die Ereignisse aus. Es ist auch völliger Blödsinn den Start einer Exe unterbinden zu wollen. Das geht entweder mit einer zweiten Exe, die vor der eigentlichen Exe gestartet wird oder über eine Batchdatei. Du könntest höchstens nach dem Start der Exe, also zur Laufzeit das Objekt bzw. die Komponente für den Datenbankzugriff erzeugen, die Verbindung prüfen und bei einem negativen Ergebnis der Verbindungsprüfung die Exe wieder beenden. Aber wie gesagt, normalerweise macht man das so eher nicht. Und wenn ich das richtig verstanden habe, sieht das der Kollege Pjordorf ähnlich.
Sei mir nicht böse aber wenn ich solche Threads lese wundert es mich nicht, mit was für Software ich mich manchmal herumärgern muss, wenn ich als reiner Admin unterwegs bin.
mrtux
Hallo,
ich sehe da zwei Varianten für dich:
1.) Die Anmeldedaten zum DB Server sind gleich und es existiert eine eigene Benutzerverwaltung:
Beim starten die DB Verbindung herstellen (try except ansehen!) und Anwendung beenden.
Idealerweise lagert man so etwas in einem thread aus, da die Applikation im Timeout für den Anwender "einfriert".
2.) Die Anmeldedaten an der DB sind Benutzerspezifisch:
Versuchen eine Datenbankverbindung aufzubauen (ggf. Testuser) oder Rückmeldung auswerten (z.B. Access Denied oder Timeout).
Was Du dir ansehen solltest sind die Ereignisse on create und on show. Dann noch try except und da sind wir auch an einem wichtigen Punkt.
Ein Programm sollte niemals abstürzen und den Benutzer mit einem Hex Code verabschieden. Logfile und eine freundliche Meldung warum ist immer hilfreich. Auch für das Produkt zu verbessern.
Hast Du überhaupt den Quellcode und den passenden Compiler? Mit Delphi mal etwas auseinander gesetzt? Eigentlich ist das nämlich richtig simpel.
Ansonsten wirst Du ein Ziel leider nicht erfüllt bekommen, die exe startet IMMER, die führt früher nämlich nicht deinen Code aus
Gruß
ich sehe da zwei Varianten für dich:
1.) Die Anmeldedaten zum DB Server sind gleich und es existiert eine eigene Benutzerverwaltung:
Beim starten die DB Verbindung herstellen (try except ansehen!) und Anwendung beenden.
Idealerweise lagert man so etwas in einem thread aus, da die Applikation im Timeout für den Anwender "einfriert".
2.) Die Anmeldedaten an der DB sind Benutzerspezifisch:
Versuchen eine Datenbankverbindung aufzubauen (ggf. Testuser) oder Rückmeldung auswerten (z.B. Access Denied oder Timeout).
Was Du dir ansehen solltest sind die Ereignisse on create und on show. Dann noch try except und da sind wir auch an einem wichtigen Punkt.
Ein Programm sollte niemals abstürzen und den Benutzer mit einem Hex Code verabschieden. Logfile und eine freundliche Meldung warum ist immer hilfreich. Auch für das Produkt zu verbessern.
Hast Du überhaupt den Quellcode und den passenden Compiler? Mit Delphi mal etwas auseinander gesetzt? Eigentlich ist das nämlich richtig simpel.
Ansonsten wirst Du ein Ziel leider nicht erfüllt bekommen, die exe startet IMMER, die führt früher nämlich nicht deinen Code aus
Gruß