动态窗体文本内容模糊查询功能可实现使用者边输入查询条件边反馈查询结果的效果,给使用者以良好的应用体验。我在本网站查到一杯绿茶老师发表的《遍历窗体全字段模糊查询》的文章,学来受益匪浅。遗憾的是老师的方法是一个具体的实例,使用时需要修改,且需对每处查询均要重复编写代码。
现我将其改写为函数形式。改写后其优点一是通用性。一个函数可以服务于所有需要对子窗体文本框文本内容进行查询的过程;二是易用性。由于采用函数形式,且该函数仅有输入查询内容的字段名称和子窗体名称2个参数,编写查询语句和查询条件、执行查询过程等全部由函数自动完成,极大简化了编写程序代码的过程,也有利于代码的修改维护。
唉,懒得写示例了,直接上代码吧:
Sub subCX(objTxtName As Object, objWinName As Object)
'===========================================================
'示例名称:通用子窗体文本动态模糊查询函数
'示例作者:cspa
'联系方式:QQ:1344866591
'制作日期:2013-7-15
'===========================================================
'参数说明:1)objTxtName:主窗体上用于输入查询内容的字段名称;
' 2)objWinName:欲查询内容的字段所在的子窗体名称。
'调用说明:在主窗体上用于输入查询内容的字段的change事件中输入:
' subCX me.[用于输入查询内容的字段名称],me.[欲查询内容的字段所在的子窗体名称]
' 即完成对该函数的调用。
Dim strWhere As String
Dim ctl As Control
Dim ctlname As String
strWhere = Trim$(objTxtName.Text)
For Each ctl In objWinName.Form.Controls
If TypeOf ctl Is TextBox Then
ctlname = ctlname & "[" & ctl.Name & "] & "
End If
Next
ctlname = Left(ctlname, Len(ctlname) - 3)
strWhere = "" & ctlname & " like '*" & strWhere & "*'"
objWinName.Form.Filter = strWhere
objWinName.Form.FilterOn = True
End Sub