Fragensteller
Access über Kontextmenü beenden

Frage
-
Hallo,
ich machte mit einem Kontextmenü Access beenden. Dazu habe ich in ein Modul geschrieben:
Function beenden () Forms![polju].ShortcutMenu = False 'Forms![polju].SetFocus 'DoCmd.Close 'Cancel = True 'DoCmd.OpenForm "Polju" For i = 0 To Forms.Count - 1 DoCmd.Close acForm, Forms(i).Name Next Application.Quit 'Resume Next End Function
Im For,ular bei Form load
Dim customBar As CommandBar Dim newButton As CommandBarButton Dim X As Variant Me.ShortcutMenuBar = "TestContext" If BarFind("TestContext") = True Then CommandBars("TestContext").Delete Set customBar = CommandBars.Add("TestContext", msoBarPopup, False, False) With customBar " X = "BEENDEN!" .Controls.Add(msoControlButton, , , , True).Caption = X .Controls(X).OnAction = "beenden" End With
Ich erhalte den Laufzeitfehler 2406 Aktion oder Befehl derzeit nicht verfügbar.
Die auskommentierten Teile sollen auf Versuche hindeuten, ich nicht zu einer Fehlerbehebung führten.
Alle Antworten
-
Hallo!
Vielleicht hilft es beim Helfen, wenn Du uns sagst, in welcher Zeile dieser Fehler auftritt.
Grundsätzlich hat Dein Code noch ein anderes Problem. Die Forms-Auflistung musst Du von hinten nach vorn durchlaufen. Sonst schließt Du das Formular mit dem Index 0. Das Formular mit dem Index 1 wird dann zum Formular mit dem Index 0. Dein Code schließt als nächstes das Formular mit dem Index 1. Das Formular mit dem Index 0 wird nicht geschlossen.
For i = Forms.Count - 1 To 0 Step -1 DoCmd.Close acForm, Forms(i).Name Next
HTH
Thomas@Team-Moeller.de
Blog: Blog.Team-Moeller.de
Homepage: www.Team-Moeller.de
- Bearbeitet Thomas Möller MVP Samstag, 9. August 2014 12:19
-
Hallo,
danke für den Hiwnweis. Der Debugger markiert
Application.Quit
Aber auch
DoCmd.Quit
bringt den gleichen Fehler.
Eigentlich müßten bei "Application.Quit" alles Fenster geschöossen und alle Prozesse beendet werden.
Beim einem Button Click wird access übrigens ordnungsgemäß beendet.
- Bearbeitet ble1a Montag, 11. August 2014 06:03
-
Hast Du schon den Code für das Schließen der Formulare angepasst?
Sind alle Formulare geschlossen, wenn die Anwendung verlassen werden soll?
Muss es denn unbedingt das Kontextmenü sein? Reicht es nicht, wenn Du die Funktion von einem Button aus startest?
CU
Thomas@Team-Moeller.de
Blog: Blog.Team-Moeller.de
Homepage: www.Team-Moeller.de
- Bearbeitet Thomas Möller MVP Montag, 11. August 2014 08:26
-
Das mit dem Kontextmenü wäre schon schön und ich würde gerne dazu lernen.
Der Code
For i = -1 To Forms.Count - 1 DoCmd.Close acForm, Forms(i).Name Next
führt zu einen Laufzeitfehler 2456:
Die Nummer, mit der Sie auf das Formular verweisen, ist ungültig.
Der Debebugger markiert: "DoCmd.Close acForm, Forms(i).Name".
-
Die Forms-Collection hat kein Element mit dem Index -1.
Schau Dir noch mal den Code an, den ich gepostet hatte.
CU
Thomas@Team-Moeller.de
Blog: Blog.Team-Moeller.de
Homepage: www.Team-Moeller.de- Bearbeitet Thomas Möller MVP Montag, 11. August 2014 09:02
-
Danke, das war ein Leichtsinnsfehler.
Was ich auch schon probiert habe, aber nicht hinkriege:
Ein Button-Klick Ereignis durch einen Rechtsklick im Kontextmenü auslösen, führt auch zu einem Fehler 2046.
Public Sub Befehl42_Click() DoCmd.Quit End Sub
Im Modul:
Function MySub3() Forms![polju].Befehl42_Click End Function
Was mir ein Rätsel ist: Warum funzt das Beenden mit einem Button und nicht mit einem Rechtsklick.
- Bearbeitet ble1a Montag, 11. August 2014 12:55
-
Welches Objekt hat denn den Fokus, wenn Du den Rechtsklick machst?
Vielleicht hilft es, wenn Du den Fokus vorher auf den Button setzt.
CU
Thomas@Team-Moeller.de
Blog: Blog.Team-Moeller.de
Homepage: www.Team-Moeller.de- Bearbeitet Thomas Möller MVP Dienstag, 12. August 2014 10:04
-
Leider nein.
Auch ein
If MsgBox("beenden", vbYesNo) = vbYes Then DoCmd.Quit
hilft nicht weiter.
Durch die Messagebox oder das Focus setzen verschwindet das Kontext-Menü, deshalb mutmaße ich, dass es am FFenster nicht liegt.
Ich habe schon eine neue Datenbank mit nur einem Formular erstellt, immer erscheint der Fehler.
-
Ich bin gerade etwa träge. ;-)
Magst Du Deine Beispieldatenbank (hier) zum Download bereitstellen?
CU
Thomas@Team-Moeller.de
Blog: Blog.Team-Moeller.de
Homepage: www.Team-Moeller.de
- Bearbeitet Thomas Möller MVP Mittwoch, 13. August 2014 07:23
-
Am 13.08.2014 schrieb ble1a:
Würde ja gerne, die Funktion ist aber anscheinend nicht freigeschaltet.
Du hast mind. 7 GB auf deinem Onedrive zur Verfügung. In diesem
Posting steht, wie Du das hier nutzen kannst:
http://social.answers.microsoft.com/Forums/de-DE/w7networkde/thread/af6c55f1-0e82-460e-babb-794ff26e5698Falls Du dann den Link hier noch nicht posten kannst, dann lass
einfach das http:// am Anfang der URL weg.
Servus
Winfried
Gruppenrichtlinien
WSUS Package Publisher
HowTos zum WSUS Package Publisher
NNTP-Bridge für MS-Foren -
Hallo,
hier die Datei:
https://onedrive.live.com/?gologin=1&mkt=de-DE#cid=b9677b8e80fae05f
das mit dem Online Spiecher habe ich nich gewusst und trotz eifrigen googlen nicht gefunden.
Danke für die Hiweise.
-
Am 14.08.2014 schrieb ble1a:
hier die Datei:
https://onedrive.live.com/?gologin=1&mkt=de-DE#cid=b9677b8e80fae05fDa passt wohl etwas noch nicht, man kann keine Datei downloaden.
Servus
Winfried
Gruppenrichtlinien
WSUS Package Publisher
HowTos zum WSUS Package Publisher
NNTP-Bridge für MS-Foren -
Hallo,
vielleicht funktioniert es so:
-
Am 18.08.2014 schrieb ble1a:
vielleicht funktioniert es so:
https://onedrive.live.com/redir?resid=B9677B8E80FAE05F!107&authkey=!AFlDwXQi6zVOA3Y&ithint=file%2cmdbDownload funktioniert, bei dem Rest konnte ich allerdings nicht
helfen. Thomas hat sicherlich eine rettende Idee. ;)
Servus
Winfried
Gruppenrichtlinien
WSUS Package Publisher
HowTos zum WSUS Package Publisher
NNTP-Bridge für MS-Foren -
-
Am 21.08.2014 schrieb ble1a:
Es hilft, die Kombi ALT F4 zu zu simulieren:
Public Function KontextFunktion() SendKeys "%{F4}" End Function
SendKeys sind böse, das kann dir auf Rechnern mit aktuellem OS ganz
schnell 'um die Ohren fliegen'.
Servus
Winfried
Gruppenrichtlinien
WSUS Package Publisher
HowTos zum WSUS Package Publisher
NNTP-Bridge für MS-Foren -
Hallo!
Schön, dass DU eine Lösung gefunden hast, die für Dich funktioniert.
Ich sehe nur einen Unterschied im Vorgehen: Mit CloseDatabase schließt Du nur die geöffnete Datenbank. Access bleibt geöffnet. Mit Application.Quit hingegen schließt Du die Datenbank und Access.
CU
Thomas@Team-Moeller.de
Blog: Blog.Team-Moeller.de
Homepage: www.Team-Moeller.de- Bearbeitet Thomas Möller MVP Samstag, 30. August 2014 07:01