Veteran
Beiträge: 291
Ort: München | Hallo Wolf,
wolf33 - 23.04.12 17:42
Hallo Guru's
ich habe in meiner hier bereits mehrfach erwähnten Access-Migration DAO1997 --> DAO2010 einer relativ grossen Applikation (DB-Teil ca. 26 MB, Datenteil derzeit ca. 120 MB Tendenz stark steigend) gelegentlich Konsistenzprobleme infolge Hardwareausfall, Stromausfall und/oder Anwender-Fehlverhalten. Man kann ja nicht jeden theoretisch denkbaren Fall abfangen. Obschon ich ein vollständiges Transaction-Handling eingebaut habe, gibt es immer wieder Überraschungen.
Um allfällige Inkonsistenzen abzufangen, startet zum frühest möglichen Zeitpunkt - im Eingangsschirm zur Steuerung der Applikation - beim Ereignis "Bei Laden" ein Checkprogramm, dass die Buchungen und Beziehungen zueinander auf Korrektheit überprüft. Das dauert bei der Datenmenge auch auf einer schnellen Maschine seine Zeit. Bis das Checkprogramm fertig und der Eingangsschirm danach geladen und operabel ist, sieht der Anwender nur einen leeren, grauen Access-Schirm mit Sanduhrsymbol. Die Anwender sind leider häufig wechselnde "Analphabeten" und agieren entsprechend der Devise: "wenns nicht mehr weiter geht, einfach den Stecker ziehen oder CTRL+ALT+DELETE drücken, Applikation abschiessen und neu starten". Das hat sich doch "bewährt" und wird deshalb immer wieder gemacht, wenn z.B. der Bildschirm "grau" ist.
Ich möchte deshalb eine akustisch unterlegte visuelle Warnung einbauen, etwa in der Art "Datenprüfung läuft, bitte warten und nicht abbrechen!" Sie sollte sichtbar sein, solange der Eingangsschirm nicht geladen und operabel ist. Bis jetzt habe ich es nicht hingekriegt, auch nicht mit einem per shell gestarteten Hilfsprogramm. Die übliche Messagebox aufzumachen und auf Aktion zu warten gefällt mir gar nicht und führt nur zu längeren Abwesenheiten der Anwender (kann ja ohnehin noch nicht arbeiten). Für Anregungen und Ideen gerne offen grüsst
Wolf33
wenn dir die MsgBox nicht gefällt, kannst du ja ein eigenes Formular mit entsprechenden Hinweisen öffen.
Alternativen zu deinem Problem:
1. Den Check in ein eigenes FE auslagern und selbstständig (zeitgesteuert) starten lassen
2. Die bessere (aber etwas aufwändigere) Lösung: das BE ändern:
zB. SQL Server Express, SQL-Server, PostgreSQL, MySQL
----- Grüße aus München
Stefan |