防止向下箭头或向上箭头更新MS Access中的组合框
通常,当用户从搜索字符串中看到结果时,会出现组合框下拉菜单,自然的响应是向下箭头以找到它们精确定位的结果。防止向下箭头或向上箭头更新MS Access中的组合框
但是,如果我的用户单击向下箭头,它将更新组合框,从而不会按预期跳转到记录。我想限制组合框仅在用户点击“Tab”,“Enter”或鼠标单击时才检测更新。
我写的组合框搜索功能完美无缺。
这是我在On键,向上事件
Private Sub cboGCPC_Search_KeyUp(KeyCode As Integer, Shift As Integer)
Dim strSQL As String
strSQL = "SELECT * " _
& "FROM qryGCPC_Search " _
& "WHERE [DocumentNumber] Like '*" & Me.cboGCPC_Search.text & "*' OR [Description] Like '*" & Me.cboGCPC_Search.text & "*' OR [Vendor] Like '*" & Me.cboGCPC_Search.text & "*' OR [Receiver] Like '*" & Me.cboGCPC_Search.text & "*';"
Debug.Print strSQL
Me.cboGCPC_Search.RowSource = strSQL
Me.cboGCPC_Search.Dropdown
End Sub
我认为你在寻找这样的事情代码:
Private Sub cboGCPC_Search_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = 38 Then
KeyCode = 0
'Me.Combo0.Dropdown 'try this too, if necessary.
'Exit Sub 'try this too, if necessary.
End If
If KeyCode = 40 Then
KeyCode = 0
'Me.Combo0.Dropdown 'try this too, if necessary.
'Exit Sub 'try this too, if necessary.
End If
End Sub
38是向上箭头,40是向下箭头。 https://msdn.microsoft.com/en-us/library/aa243025%28v=vs.60%29.aspx?f=255&MSPPError=-2147217396 – wazz
准确地说。非常感谢你。我添加了我如何实现它。 – monty327
有一个小故障。我昨天没注意到它。用户选择一个值后,会触发AfterUpdate,但组合框保持下降状态。我显然需要隔离输入,制表符或鼠标点击是触发AfterUpdate并关闭下拉列表的唯一键。不知道如何关闭它。我假设发射AfterUpdate关闭下拉菜单。 – monty327
这是我实现WAZZ的答案的完整方法。
Private Sub cboGCPC_Search_KeyUp(KeyCode As Integer, Shift As Integer)
Dim strSQL As String
strSQL = "SELECT * " _
& "FROM qryGCPC_Search " _
& "WHERE [DocumentNumber] Like '*" & Me.cboGCPC_Search.text & "*' OR [Description] Like '*" & Me.cboGCPC_Search.text & "*' OR [Vendor] Like '*" & Me.cboGCPC_Search.text & "*' OR [Receiver] Like '*" & Me.cboGCPC_Search.text & "*';"
Debug.Print strSQL
Select Case KeyCode
Case 38, 40
KeyCode = 0
Case 1, 9, 13
Exit Sub
Case Else
Me.cboGCPC_Search.RowSource = strSQL
Me.cboGCPC_Search.Dropdown
End Select
End Sub
我想我知道你在做什么,但有点不清楚你的意思是'更新'。 “如果我的用户点击向下箭头,它会更新组合框,”“限制组合框只感知更新......”。 cbo正在更新每个击键是不是? “Tab”,“Enter”或鼠标点击会发生什么? – wazz
为了澄清,我指的是会导致组合框“失去焦点”的击键。一旦焦点丢失,组合框被视为更新。这又会触发AfterUpdate事件。当用户输入“关键事件”时,组合框还没有成熟。但是,当用户单击向下箭头(或输入或选项卡,或单击鼠标)组合框* IS *被认为已更新,因为它失去了组合框的焦点。必须有一种方法来捕获向下箭头键或向上箭头键,以便在用户使用向上或向下键进行扫描时触发AfterUpdate事件。 – monty327