2017-05-26 4 views
1

Der folgende Code zum Schließen des Zugriffsnavigationsbereichs funktioniert.Ist der MS-Access-Navigationsbereich sichtbar?

DoCmd.NavigateTo "acNavigationCategoryObjectType" 
DoCmd.RunCommand acCmdWindowHide 

Aber das Problem ist, dass, wenn das Navigationsfenster bereits geschlossen ist, dann ist die acCmdWindowHide wird nur ein anderes Objekt verstecken (das heißt Form, Tabelle), die offen war. Ich benutze DoCmd.TransferDatabase in meinem Code und wenn dies ausgeführt wird, wird der Navigationsbereich manchmal geöffnet. Dies kann passieren, wenn eine Warnmeldung zum Datenimport angezeigt wird und der Benutzer auf Abbrechen klickt. Um sicher zu sein, dass der Benutzer den Bereich nicht sieht, den ich ausblenden möchte, aber wenn er bereits ausgeblendet ist, gibt es nichts zu verbergen, aber der obige Befehl verbirgt nur mein Formular und das ist nicht was ich will.

Die Linie

DoCmd.NavigateTo "acNavigationCategoryObjectType" 

wird immer dann ausgeführt, und nicht alles zurück. Es wird kein Fehler zurückgegeben, wenn es keinen Navigationsbereich zum Navigieren gibt.

Meine Frage ist: Wie kann ich feststellen, ob der Navigationsbereich gerade geöffnet ist, so dass ich weiß, dass ich ihn schließen muss. Oder wie kann ich sicherstellen, dass ich das Navigationsfenster aber kein anderes Objekt schließe, wenn ich den obigen Code verwende?

Antwort

1

This forum thread schlägt vor:

Public Function HideIt() 

    ' Employee is just any existing table 
    DoCmd.SelectObject acTable, "Employee", True 
    If Application.CurrentObjectName = "Employee" Then DoCmd.RunCommand acCmdWindowHide 

End Function 
+0

Danke, das funktioniert für mich. Es gibt jedoch eine Ausnahme: Wenn ein Filter verwendet wird, um nur einige Objekte im Navigationsbereich anzuzeigen, und dieser Filter den CurrentObjectName nicht zulässt, funktioniert der obige Code nicht, da das Objekt mit diesem Namen niemals ausgewählt werden kann. Beispiel: Ein Filter "Kunde" wird verwendet, um nur Objekte mit einem Namen wie Kunde anzuzeigen. Wenn der obige Code versucht, Mitarbeiter auszuwählen, der nicht ausgewählt werden kann, auch wenn das Navigationsfenster geöffnet ist, weil der Filter dies nicht zulässt. Und dieser Filter verschwindet nicht, nachdem das Navigationsfenster ausgeblendet wurde. Kein Problem in meinem Fall. – Edgar

Verwandte Themen