Besten Dank für Eure Mühe!!!
Manchmal steckt der Teufel im Detail...
Ich hatte, um während der Entwicklung schon was "sehen zu können", Connection, Transaction, Query und DataSource mit sinnvollem Zeugs
gefüllt, bzw auf active/connected gestellt.Natürlich hatte ich dabei die Connection von vorne herein auf connected true gestellt. Hierbei konnte
im "try" natürlich nicht auf connected true geschaltet werden - war ja schon true. Warum sich letztendlich das try-except dann nicht erwartungs-
gemäß verhalten hat, bleibt mir ein Rätsel - aber sei's d'rum - wenn die Connection nicht von vorne herein auf connected true geschaltet ist,
klappts: Problem gelöst.
Asche auf mein Haupt
Michael
try except
- Swirl
- Beiträge: 93
- Registriert: Fr 7. Aug 2015, 14:05
- OS, Lazarus, FPC: Win 10/11/ Mint 21.3 / Lazarus 30 / FPC 3.2.2
- CPU-Target: x86_64, ARM Cort.-A7
- Wohnort: Schwerte NRW
[gelöst] try except
=> Mint 21.3 “Virginia” - Win 10/11 - Lazarus 3.0 - FPC 3.2.2
-
- Beiträge: 177
- Registriert: Mi 2. Sep 2015, 11:09
- OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
- CPU-Target: Windows 32/64bit
Re: [gelöst] try except
Ganz einfach weil der Setter für .Connected prüft, ob der Wert schon true ist und dann eben auch nichts ausführt. Und wenn nichts ausgeführt wird, dann kann es auch keine Exception geben.
-
- Beiträge: 843
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: try except
Das kannst du machen wie du magst, ich kann dir nur sagen was bei mir seit Dekaden klappt.Swirl hat geschrieben: ↑So 6. Nov 2022, 08:03Ich starte Xampp nicht mittels Control Panel, sondern habe festgelegt, dass MySQL/MariaDB automatisch mit Windows starten. Und das läuft halt nicht immer spontan mit dem Windows-Start synchron ab. Das Ganze läuft beim Kunden - und dem möchte ich nicht jedesmal zumuten, zu schauen, ob MySQL bereits "auf grün" steht, oder noch nicht.
Mein Programm startet eh per Autostart und kommt deshalb dem (zeilich unzuverlässigen [sorry]) Autostart des MySQl-Servers in die Quere.
Mein Problem besteht also weiterhin in der Lösung per try-except ohne(!) Systemdialog (s.o.), sondern per Meldung im Programm(!)
Autostart von MySQL -> ja mache ich beim Kunden auch
Autostart vom Programm? NO
Ich mute meinem Benutzer zu dass er im stande ist auf ein Icon zu klicken um ein bestimmtes Programm zu starten. Wenn das nicht möglich ist, dann kann er mit Windows einfach nicht umgehen und kann mit dem Ding ohnehin nix anfangen.
Gewisse Mindestkenntnisse setze ich voraus.
Gerne baue ich dem User einen Link ins Startmenü oder auch auf den Desktop (igitt -- nur unter Gewaltandrohung) oder in eine companyweite Richtlinie.
Ich habe bei einem Betriebssystem keinerlei Einfluß auf die Startreihenfolge von Diensten, Programmen etc. (unzuverlässig ist nicht der SQL Server sondern das OS) daher halte ich mich da tunlichst raus.
Damit hab ich eine gute Chance dass der SQL Server läuft bevor der Benutzer auf das Programmicon klickt.
Besonders wenn ich ihm sage dass er zuerst den Rechner einschalten und sich danach den Kaffee holen soll.
Auch auf aktuellen Rechnern ist ein Office-Rechner erst zu gebrauchen NACHDEM alle nötigen und unnötigen Services (Dropbox, OneNote SynologyDrive, diverse Viren und Werbescanner und Updater) mit ihren Jobs fertig sind.
Und weil auch der Benutzer nur mit einer aktiven SQL-Datenbank als Voraussetzung arbeiten kann löse ich das so, dass mein Programm mit einer sauberen Meldung abbricht dass die DB nicht erreicht werden kann. Der User startet einfach später nochmal.
Wenn das öfter passiert (das protokolliere ich in einem logfile mit) dann gibts auch eine Meldung die auf die Situation und den Admin hinweist.
-
- Beiträge: 843
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: [gelöst] try except
Bei Verwendung von Daten im Design Mode ist es ratsam im Code als erstes einen definierten Zustand herstellen, egal ob die DB im DesignMode aktive war oder nicht.
Code: Alles auswählen
CloseConnection; //in case SQLDBLibraryLoader1 or SQLConnector1 were active in design mode close them
sieh dir mal die Variante SQLdbRuntime und SQLdbGUI an