访问,Select 案例 ActiveControl.Name?

Access, Select Case ActiveControl.Name?

我在表单访问中有 2 个组合框(c1c2),带有按钮 Search,如果用户从 c1 并点击 Search 它应该打开一个 FORM1,如果用户从 c2 中选择一个值并点击 Search 它应该打开 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

如果您单击组合框然后单击 搜索 按钮,则组合框不是最后一次单击,因此它不是活动的 - 搜索按钮是(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

使用 ActiveControl 无效。当您单击搜索时,控件转到搜索按钮。

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

编辑:代码见 ashleydawgs 答案。