【问题标题】:Programmatically select a NavigationControl Tab in Ms Access以编程方式在 Ms Access 中选择 NavigationControl 选项卡
【发布时间】:2020-07-04 05:13:19
【问题描述】:

目前我们使用这个命令来切换到一个选项卡 导航控件

DoCmd.BrowseTo acBrowseToForm, TabToOpen, Me.name & ".NavigationSubform"

如果所选选项卡/按钮有唯一的 NavigationTargetName,则此方法可以正常工作。如果我们有两个或多个具有相同目标表单名称的选项卡,我们将无法打开特定选项卡。 -打开与 targetName 匹配的第一个选项卡-

TabATabC 具有相同的 targetFormName X 如果我们使用以下命令

DoCmd.BrowseTo acBrowseToForm, X, Me.name & ".NavigationSubform"

TabA 已激活。

问题:我们如何激活 TabC?

我们已经尝试过NavigationForm.TabC.SetFocus & NavigationForm.navBarTop.Tabs(9).SetFocus 没有运气。

.SelectedTab 属性是只读的。

关于为什么我们有相同的 targetFormName:我们使用一个表单,但动态 SQL 依赖于选定的选项卡,以减少不同状态数据的 x 个相同表单的数量。

非常感谢

【问题讨论】:

  • 建议不要使用导航表单,而是在主表单上使用带有一些按钮的普通子表单来管理子表单的过滤。
  • 我看到的所有内容都必须引用与选项卡关联的表单,并且由于您对每个 NavigationTarget 使用相同的表单,因此使用 Navigation 表单可能没有实际的方法。
  • @Gustav 不确定您认为通过此处的回滚实现了什么。任何进一步的此类操作只会导致帖子锁定。
  • @MartijnPieters:它被错误地从正确的[vba] 重新标记为[access-vba],因为这个问题在 Microsoft Access 环境之外没有相关性。您(和用户 braX)针对许多新问题、旧问题甚至非常旧的问题都这样做了,从而破坏了历史记录(最近的活动)以及搜索选项.我相信您预计这种大规模重新标记会产生一些积极影响,但相信我,这些影响是负面的,甚至不是中性的。因此,我恳请您以后不要这样做。
  • @MartijnPieters:哦,我刚刚注意到@Erik A here 的评论,您的理由可能是 [access-vba] 应该像 [excel-vba] 一样被弃用。但事实并非如此。

标签: vba ms-access


【解决方案1】:

在遇到同样的问题后,我找到了解决方法。

使用 TabIndex 属性将要打开的导航按钮临时移到开头,即 TabIndex = 0。然后触发 BrowseTo 命令,然后将 TabIndex 设置回原始值。对我来说,这很有效,没有负面的视觉效果或类似的效果。

鉴于您使用 TabC 的示例,这将导致如下结果:

NavigationForm.TabC.TabIndex = 0
DoCmd.BrowseTo acBrowseToForm, X, Me.name & ".NavigationSubform"
NavigationForm.TabC.TabIndex = 2

当然,这可以变得更加动态,例如通过从选项卡名称到索引位置的映射,然后结合该映射对所有选项卡使用相同的代码。

【讨论】:

    猜你喜欢
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多