Access表单上的文本框传递先前的值
Posted
技术标签:
【中文标题】Access表单上的文本框传递先前的值【英文标题】:Textbox on Access form passing previous value 【发布时间】:2020-01-04 00:01:42 【问题描述】:我创建了一个搜索表单。
有一个用于搜索文本的文本框。用户通过点击搜索按钮或按下回车键来触发搜索事件。
按钮点击事件有效。
第一次按下回车键时,文本框将传递上一个事件在文本框中输入的值。如果我第二次按回车键,则当前值通过。
例如,在表单加载时,文本框为空,然后我将搜索文本输入为“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
【问题讨论】:
就用这个:***.com/questions/22792836/… 您的代码不起作用的原因:直到您离开文本框后才设置新的.Value
。比较这个最近的问题:***.com/questions/59556810/…
【参考方案1】:
只需先将焦点设置到搜索按钮即可。
此外,我还会检查是否按下制表符(并对返回和制表符都使用常量)。
为了保持不变的 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
【讨论】:
非常感谢安德烈,这实际上解决了问题 @Anees:不客气。如果您发现它解决了您的问题,请考虑accepting the answer。 @Andre 嗨,Andre,我面临一个问题。我不知道如何在此门户上发送直接请求,因此我使用该方法作为评论回复。以下链接将带您前往该帖子 (***.com/questions/59752046/…)以上是关于Access表单上的文本框传递先前的值的主要内容,如果未能解决你的问题,请参考以下文章
ms access 2003 - 表单上的文本框:不跳转到任何文本框
Access 2010 Web 数据库 - 从局部变量更新文本框值?
根据带有if条件的多个文本框值将值分配给表单上的文本框-MS ACCESS