Hallo,
ich suche eine Möglichkeit um den Abbruch laufender Kalkulationen in meiner db durch den Taskmanager zu verhindern.
Habt Ihr dafür Lösungen?
Man könnte die Kalkulationen so beschleunigen, dass es keine Zeit oder zumindest keinen Anlass gibt, den Taskmanager zu betätigen.
Ansonsten sehe ich es als bedenklich an, Windows-Funktionalität durch Anwendungs-Funktionalität beschneiden zu wollen. Stelle Dir vor, Du musst und willst selber die unendliche Kalkulation abbrechen.
MfGA
ebs
Hi,
es geht hier nicht um mich.
Ich habe meine Anwendung zu Testzwecken in eine Mehrbenutzerumgebung gelegt und muss feststellen, dass es den Usern wohl zu lästig ist, einen Kalkulationsvorgang konsequent zu Ende zu bringen und ordnungsgemäß zu speichern.
Die Konsequenzen für die Anwendung brauche ich wohl hier nicht zu beschreiben.
Meine Frage: Kann Access die Tastenkombination auslesen und kann man über VBA den Abbruch durch den Taskmanager verhindern.
Hallo,
der Taskmanager wird ja nicht nur über die Tastenkombi gestartet, sondern auch über die Taskleiste, wie willst Du das verhindern?
Ich nehme z.B. nie die Tastenkombi.
Und was Ebs meinte, war auch über eine Beschleunigung der Kalkulation nachzudenken, dass die User erst gar nicht den TM aufrufen wollen.
Was ist denn bei der Kalkulation so aufwendig, dass das so lange dauert?
Hallo,
ich vertrete hier die gleiche Meinung wie ebs ...
Den Taskmanager de-/aktivieren erfordert meiner bescheidenen Kenntnis nach einen Eingriff in die Registry - und davor kann ich dich nur warnen.
Warum? Weil du den Taskmanager beim Starten der Anwendung deaktivieren müsstest und beim Schließen der Selbigen wieder aktivieren.
Sollte es beim Schließen oder während der 'normalen' Arbeit mir der Applikation einen Crash geben bleibt der Taskmanager deaktiviert ...
Also auch meine Empfehlung - Finger weg!
Ok!
Es war der Versuch mein Problem vielleicht lösen zu können.
Die vermeintliche Alternative der Beschleunigung ist leider nicht möglich. Dazu müssen im Kalkulationsvorgang zu viele Parameter gesetzt bzw. Tabellen ausgelesen werden.
Danke!
Das "nicht möglich" ist fundiert? Ich habe schon von Vorgängen gelesen, wo Prozeduren von Fortgeschrittenen von größer 24 Stunden auf weniger als 4 Minuten zusammengeschmolzen wurden.
Zu viele Tabellen: Wie kann das kommen? Stimmen die Strukturen?
Zu viele Parameter: Ungünstige Strukturen? Einzelaufrufe statt Massendatenverarbeitung?
Falsche Methoden? Falsche Umgebung?
Es ist gerade Kern der Datenbankarbeit, aus sehr vielen Daten sehr schnell Ergebnisse zu erzeugen.
MfGA
ebs
Ach weist Du:
Es geht um die Kalkulation eines Haftetiketts bis zu Angebotserstellung. Die nacheinander zu setzenden Parameter werden aus Tabellen ausgelesen, wie
- Druckverfahren
- Form und Grösse (Stanze)
- Aufmachung (Rolle mit entsprechender Wicklung bzw. Bogen)
- Material 1 (Papier oder Folie)
- Material 2 (Heißprägefolie gehört zu einem Druckverfahren)
- Preise
usw...
Ich breche hier ab. Die Performance meiner Anwendung ist noch zu steigern. Ich komme aber nicht von den zu setzenden Parametern los.
Sicher könnte ich auf die eine oder andere kleinere Tabelle verzichten indem ich die Parameter im Kombifeld setze und das Ergänzen zulasse. Das hatte ich mal getan und
binnen 4 Wochen waren aus meinen 6 Einträgen ganze 24 geworden. Dabei viel Schwachsinn, den man nicht wieder los wird. Zumindest kenne ich keine Lösung für deren
Löschung aus der Anwendung heraus.
Danke für Dein Engagement und gute Nacht.
Hi,
frei nach dem Motto "Bist Du nicht willig, so gebrauche ich API" ist ein Taskmanager per VBA vorübergehend schließbar.
Die folgenden Schritte sind notwendig:
1. Vor Deiner zeitintensiven Aktion wird das Zeitereignis aktiviert, indem das Zeitintervall auf einen Wert > 0 gesetzt wird.
2. Im Zeitereignis wird mit API überprüft, ob der Manager aktiv ist
3. Wenn das der Fall ist, wird das Programm geschlossen.
4. Nach Deiner zeitintensiven Aktion das Zeitintervall wieder auf 0 setzen
Ist dieses Ziel (Taskmanager zu schliessen) trotz der zuvor geäußerten Warnhinweise weiterhin interessant?
Harald
Danke,
das wollte ich eigentlich wissen.
Damit ist mir auch klar, dass diese Möglichkeit nicht in Frage kommt weil das Zeitereignis nicht zu bestimmen ist.
In der Anwendung und anderen Büroprogrammen wird ganztägig gearbeitet.
Meine Vorstellung war, dass Access erkennen kann, ob der Taskmanager aufgerufen wird. In der Folge (Warnhinweis)
sollte der Taskmanager durch Acccess wieder beendet werden.
Da war ich wohl etwas zu "Blauäugig".
Hi,
Zitat von: hawebe am September 09, 2013, 12:48:22
Damit ist mir auch klar, dass diese Möglichkeit nicht in Frage kommt weil das Zeitereignis nicht zu bestimmen ist.
In der Anwendung und anderen Büroprogrammen wird ganztägig gearbeitet.
ich habe den Eindruck, dass wir beide unterschiedliche Auffassung vom "Zeitereignis" haben. ;D
Es gibt in einem Formular die Möglichkeit, automatisch alle x-Sekunden das Ereignis "Bei Zeitgeber" aufzurufen. Hier könnte die Routine stehen, die prüft, ob der Taskmanager aufgerufen ist und diesen dann ggf. schließen.
Harald
Hi,
vielleicht kann das Beispiel im Anhang zum Verdeutlichen dienen.
Das Formular wird automatisch gestartet. Wenn ""Starte das Zählen" angeklickt wird, wird ein längerer Prozess simuliert.
Jede Sekunde wird geprüft, ob "Windows Task-Manager" aktiv ist. Wenn ja, wird der geschlossen.
Das ganzen kann nicht durch Anklicken vom Kreuz (oben rechts) geschlossen werden.
Ist getestet unter win7 und access2003.
Harald
[Anhang gelöscht durch Administrator]
Zitat von: hawebe am September 08, 2013, 19:17:44
Ich habe meine Anwendung zu Testzwecken in eine Mehrbenutzerumgebung gelegt und muss feststellen, dass es den Usern wohl zu lästig ist, einen Kalkulationsvorgang konsequent zu Ende zu bringen und ordnungsgemäß zu speichern.
Der normale Anwender geht davon aus, daß die Applikation hängt, wenn eine Augenblicke lang sich nichts sichtbares tut. Leider gibt es keine Threads im Access, so daß während des Rechnens auch die GUI blockiert ist. Vorschlag: Verwende einen Fortschrittsbalken.
Zitat
Meine Frage: Kann Access die Tastenkombination auslesen und kann man über VBA den Abbruch durch den Taskmanager verhindern.
Access kann nur die Tasten auswerten, die benutzt werden, wenn das Access-Fenster aktiv ist. Verhindern, daß der Taskmanager geöffnet wird, kann man über Einstellungen in der Registry. Aber schon die Idee ist völlig daneben. Sowas machen Hackerprogramme wie Scareware-Trojaner.
Hallo Harald,
ich habe den Anhang heruntergeladen und muss nun testen.
Ich denke mal, dass ich damit klar komme. Ich kann dann ja noch immer entscheiden wie ich weiter verfahre.
Herzlichen Dank für die Hilfe.
Hallo Harald,
der Test Deiner .mde hat mich unter Windows 7 und Office 2010 überzeugt.
Kannst Du mir eine mdb zur verfügung stellen?
Hi,
anbei die mdb-Datei.
Wenn das Programm mit gedrückter shift-Taste gestartet wird, hast Du Gelegenheit, den VBA-Teil aufzurufen.
Dort habe ich noch einige Kommentare eingetragen. Diese werden hoffentlich hilfreich sein.
Bitte aber bedenken, dass es das oberste Ziel sein sollte, die eigentliche Ursache des Themas zu optimieren.
Harald
[Anhang gelöscht durch Administrator]
Hi,
herzlichen Dank für die mde.
Ich werde sie in eine Testversion meiner Anwendung übernehmen und mal sehen, welche Konsequenzen ggf. zu ziehen sind.
Das wird aber noch dauern, denn die nächsten Tage bin ich im Ausland.
Also nochmals Danke.