vba - Access表单上的文本框传递先前的值
问题描述
搜索文本有一个文本框。用户通过单击搜索按钮或按下回车键来触发搜索事件。
按钮单击事件正在工作。
第一次按下回车键时,文本框将传递上一个事件在文本框中输入的值。如果我第二次按回车键,则当前值通过。
例如,在表单加载时,文本框为空,然后我将搜索文本输入为“Ali”并按回车键,然后传递值“NULL”,再次按下回车键,然后传递值“Ali”。
Option Compare Database
Option Explicit
Private Sub btnSearch_Click()
Dim SQL, strSearch As String
strSearch = Nz(Me.txtSearch.Value, "")
SQL = "SELECT tbl_mst_Employee_Details.emp_ID, " _
& "tbl_mst_Employee_Details.emp_Name " _
& "FROM tbl_mst_Employee_Details " _
& "where [emp_Name] like '*" & strSearch & "*' " _
& "ORDER BY tbl_mst_Employee_Details.emp_Name;"
Me.lstEmployee.RowSource = SQL
Me.lstEmployee.Requery
Me.txtEmpID.Value = ""
Me.txtEmpName.Value = ""
Me.Refresh
End Sub
Private Sub Form_Load()
Me.txtEmpID.Value = ""
Me.txtEmpName.Value = ""
Me.txtSearch.Value = ""
End Sub
Private Sub lstEmployee_Click()
With lstEmployee
Me.txtEmpID.Value = .Column(0)
Me.txtEmpName.Value = .Column(1)
End With
End Sub
Private Sub lstEmployee_DblClick(Cancel As Integer)
Forms!frmEmployeeShiftDetails.txtEmpID.Value = Me.txtEmpID
Forms!frmEmployeeShiftDetails.txtEmpName.Value = Me.txtEmpName
DoCmd.Close
Forms!frmEmployeeShiftDetails.txtEmpID.SetFocus
End Sub
Private Sub lstEmployee_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
lstEmployee_DblClick (0)
End If
End Sub
Private Sub txtSearch_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
btnSearch_Click
End If
End Sub
解决方案
只需先将焦点设置在搜索按钮上。
此外,我还会检查是否按下制表符(并为两者使用常量,返回和制表符)。
为了具有恒定的 UI 行为,我会注意在搜索框中按 Tab 时搜索按钮接收焦点,因此在表单中设置正确的 Tab 顺序。
Private Sub txtSearch_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Or KeyCode = vbKeyTab Then
btnSearch.SetFocus
btnSearch_Click
End If
End Sub
推荐阅读
- linux - Client-Server进程互通
- syntax - 有没有一种(简单的)方法来修改某些特定编程语言的语法?
- python - 如何使用已编译的 Code 对象创建 Function 对象?
- azure - 在 Windows VM 中使用 VM 自定义扩展安装 Azure 文件时出现问题
- python - 如何确定一个点是否位于凹壳(Alpha 形状)内?
- python - Kivy - 从主类更新弹出窗口中的标签文本
- flutter - 类型的对象未在 GetIt 中注册
- firebase - 如何保持 Firestore 和 Firebase 存储同步
- python - Python二进制搜索算法返回无
- python - 无法实现用于解决密码工作的爬山算法