访问,选择案例 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
用于先前的控制。但是,如果您单击了另一个控件(不是c1
或c2
,而Screen.PreviousControl
没有),此答案也有效
它 wooooks thaaank youuuuu
@ErikvonAsmuth 是否可以将 2 个条件放在一个案例中??【参考方案2】:
使用 ActiveControl 将不起作用。当您单击搜索时,控制转到搜索按钮。
您可以通过几种方式进行处理。您可以 (a) 查询两个控件以检测哪个控件未设置为默认值,或者 (b) 跟踪哪个控件最后具有焦点(可能使用隐藏控件)。
编辑:查看 ashleydawgs 的代码答案。
【讨论】:
以上是关于访问,选择案例 ActiveControl.Name?的主要内容,如果未能解决你的问题,请参考以下文章