我有一个前端数据库,我动态地将一些链接表添加到后端数据库。接下来,我正在从隐藏的系统表中读取它们的ID,以便在我创建的一些自定义组中将它们添加到导航窗格。
虽然我相信我正在使用正确的表/值,但在完成MSysNavPaneGroupToObjects表中的插入后,我找不到任何方法来刷新导航窗格。
可以在此处找到与我正在尝试实现的内容相近的唯一信息:Change Navigation pane group in access through vba
但在我的情况下,所有值都是成功创建的(我认为),但我看不到导航窗格中的条目。有时它有效,但大多数时候我只看到空组。
我想知道是否有人解决了类似问题,或者有文档/论坛我可以找到更多信息。谢谢
答案 0 :(得分:2)
答案 1 :(得分:1)
访问中存在一个错误,您必须刷新导航窗格才能显示甚至关闭并重新打开。
另一种选择是隐藏然后显示,但这可能只是像其他建议一样刷新它
<强>隐藏强>
DoCmd.RunCommand acCmdWindowHide
显示强>
DoCmd.SelectObject acTable, , True
答案 2 :(得分:1)
如果写入MSysNav*
表的更改并不总是出现在导航窗格本身中,即使在关闭并重新打开数据库之后,这也不是真正的&#34;刷新&#34;问题。其他一些东西可能会干扰这些表的更新,导致您的更改无效。
在一个answer to a related question Wayne G. Dunn建议&#34;这个[MSysNavPaneObjectIDs]表在Access&#34;的奇思妙想中被重建,这可能与应用程序对该表的更新产生冲突&#39 ; s VBA代码。如果这是真的并且MSACCESS.EXE在数据库打开时期望(有效)独占访问MSysNav*
系统表,那么解决方法是确保正在修改的数据库是而不是在应用MSysNav*
修改时在MSACCESS.EXE中打开。
这样做的一种方法是在&#34; main&#34;中使用VBA代码。数据库
Application.Quit
。单独的进程可以在另一个Access数据库,VBScript或您喜欢的任何内容中运行代码。它会
MSysNav*
表,而MSACCESS.EXE没有打开它,&#34;相关细节&#34;两个进程之间共享将取决于此方法的实现细节,但可能包括
MSysNav*
表中添加或更新的项目。