根据Access软件网网站上前辈分享的示例,做了修改,重新结合自身需要的功能做了个示例,分享给大家学习,输入拼音就检索拼音,输入中文就检索中文。
Private Sub 姓名_Change()
If biaozhi Then
'如果是在“更新后”事件之后触发的“更改”事件,需要加载所有数据,以确保能正常显示,
'否则当绑定列和显示的列不是同一字段的时候,会造成实际是有值的,但是显示的是空的
Me.姓名.RowSource = " Select 姓名,工号,班组,岗位 FROM 员工信息 orDER BY 姓名"
biaozhi = False '然后再恢复标志变量
Else
'正常输入触发“更新后”事件时,根据当前输入的文字,对其进行模糊查询
'这里要注意3点:
'1. 需要用Text属性才能正确取得输入的文字内容,因为这时值还未更新,所以不能使用Value属性
'2.
Me.姓名.RowSource = " Select 姓名,工号,班组,岗位 FROM 员工信息 ORDER BY 姓名"
Me.姓名.Dropdown
End If
Dim ASCMA As Long
Me.助记码 = Me.姓名.Text
If Len(Nz(Me.助记码)) > 0 Then ASCMA = Asc(Me.助记码)
If (ASCMA > 96 And ASCMA < 123) or (ASCMA > 64 And ASCMA < 91) Then
Me.姓名.RowSource = "Select 姓名,工号,班组,岗位,HZPY([姓名]) AS 首字母 FROM 员工信息 Where getpyszm([姓名]) Like [Forms]![诚信实时信息录入]![助记码] & '*'"
Me.姓名.Dropdown
End If
If biaozhi Then
'如果是在“更新后”事件之后触发的“更改”事件,需要加载所有数据,以确保能正常显示,
'否则当绑定列和显示的列不是同一字段的时候,会造成实际是有值的,但是显示的是空的
Me.姓名.RowSource = " Select 姓名,工号,班组,岗位 FROM 员工信息 orDER BY 姓名"
biaozhi = False '然后再恢复标志变量
Else
'正常输入触发“更新后”事件时,根据当前输入的文字,对其进行模糊查询
'这里要注意3点:
'1. 需要用Text属性才能正确取得输入的文字内容,因为这时值还未更新,所以不能使用Value属性
'2.
Me.姓名.RowSource = " Select 姓名,工号,班组,岗位 FROM 员工信息 ORDER BY 姓名"
Me.姓名.Dropdown
End If
Dim ASCMA As Long
Me.助记码 = Me.姓名.Text
If Len(Nz(Me.助记码)) > 0 Then ASCMA = Asc(Me.助记码)
If (ASCMA > 96 And ASCMA < 123) or (ASCMA > 64 And ASCMA < 91) Then
Me.姓名.RowSource = "Select 姓名,工号,班组,岗位,HZPY([姓名]) AS 首字母 FROM 员工信息 Where getpyszm([姓名]) Like [Forms]![诚信实时信息录入]![助记码] & '*'"
Me.姓名.Dropdown
End If
End Sub
演 示:
示例下载:
在“了解更多”里下载。