访问,选择案例 ActiveControl.Name?

Posted

技术标签:

【中文标题】访问,选择案例 ActiveControl.Name?【英文标题】:Access, Select Case ActiveControl.Name? 【发布时间】:2018-03-26 11:57:27 【问题描述】:

如果用户从 c1 中选择一个值并点击 Search 它应该打开一个FORM1,如果用户从c2 中选择一个值并点击搜索它应该打开FORM2

Private Sub Commande6_Click()
    Select Case ActiveControl.Name
        Case "c1"
            DoCmd.OpenForm "FORM1"
        Case "c2"
            DoCmd.OpenForm "FORM2"
        Case Else
            'traitement
     End Select
End Sub

【问题讨论】:

为什么不起作用? 我不知道,当我点击按钮时它没有显示任何内容 在该过程的开头添加一个临时行:MsgBox ActiveControl.Name。然后尝试变体,看看 it 认为主动控件被调用的是什么。解决方案应该变得非常明显。 (我敢打赌,活动控件是“搜索”按钮,因为这是最后一次点击。它不叫2nd-to-last-ActiveControl :) 它显示了'Commande6' 【参考方案1】:

如果您单击组合框,然后单击 Search 按钮,则组合框不是最后一次单击,因此它不是活动的 - 搜索按钮是 (Commande6在你的情况下)

Public lastCBclicked as String

Private Sub c1_Click()
    lastCBclicked  = ActiveControl.Name
End Sub

Private Sub c2_Click()
    lastCBclicked  = ActiveControl.Name
End Sub

Private Sub Commande6_Click()
  Select Case lastCBclicked  
    Case "c1"
        DoCmd.OpenForm "FORM1"
    Case "c2"
        DoCmd.OpenForm "FORM2"
    Case Else
        'traitement
   End Select
End Sub

【讨论】:

是的,或者一个变量。 :) 虽然我会推荐这种方法(这就是我不将其作为答案发布的原因),但您确实有 Screen.PreviousControl 用于先前的控制。但是,如果您单击了另一个控件(不是c1c2,而Screen.PreviousControl 没有),此答案也有效 它 wooooks thaaank youuuuu @ErikvonAsmuth 是否可以将 2 个条件放在一个案例中??【参考方案2】:

使用 ActiveControl 将不起作用。当您单击搜索时,控制转到搜索按钮。

您可以通过几种方式进行处理。您可以 (a) 查询两个控件以检测哪个控件未设置为默认值,或者 (b) 跟踪哪个控件最后具有焦点(可能使用隐藏控件)。

编辑:查看 ashleydawgs 的代码答案。

【讨论】:

以上是关于访问,选择案例 ActiveControl.Name?的主要内容,如果未能解决你的问题,请参考以下文章

Filter案例

验证码选择加粗的数字案例

一个拓扑,搞定BGP13条路径选择算法 - 案例分析

30个Linux Shell脚本经典案例(中)

真牛掰!阿里人用5个案例就彻底讲清了SpringSecurity安全框架

HBase模式案例研究列表数据