|
请各位测试并提出宝贵意见
在7楼已有更新
Public Function 模糊搜索(数据源 As String, 条件 As String) As String
''=================================================================================
'' 函数说明:
'' 此函数执行成功则返回一个包含全字段模糊查询条件的查询语句,
'' 可以作为窗体数据源、列表框的行来源、查询的SQL语句。
'' 参数说明:
'' 数据源 参数: 必填 可以是表名、查询名、SQL语句
'' 条件 参数: 必填 可以是任何字符,多个条件用空格隔开
'' 使用示例:
'' Me.列表框1.RowSource = 模糊搜索("人员表", Me.文本1)
'' Me.子窗体.Form.RecordSource = 模糊搜索("Select * From 人员表", "张小 大力 韦 001")
'
'' 设计:t小宝 于2007-12-27
''================================================================================
Dim dbs As dao.Database
Dim r字段 As dao.Recordset
Dim stsql As String
Dim s数组() As String
Dim s条件 As String
Dim i条件 As Integer
Dim i As Integer
Dim i1 As Integer
s条件 = Trim(条件)
If Len(数据源) = 0 Then ' 不输入数据源,退出
Exit Function
End If
' 转换数据源参数为SQL语句
If InStr(1, 数据源, "select ", 1) = 0 Then ' 如果数据源是查询语句
stsql = "Select * From (Select * From " & 数据源 & ") As a "
Else ' 数据源是表名或查询名称
stsql = "Select * From (" & 数据源 & ") As a "
End If
If Len(s条件) = 0 Then ' 不输入条件
模糊搜索 = stsql
Exit Function
End If
' 清除条件中多余的空格,转换为数组
Do Until InStr(1, s条件, " ", 0) = 0
s条件 = Replace(s条件, " ", " ") ' 用一个空格替换两个空格
Loop
s数组 = Split(s条件)
i条件 = UBound(s数组)
' 循环组合字段条件
Set dbs = CurrentDb
Set r字段 = dbs.OpenRecordset(stsql & " Where False")
With r字段
For i = 0 To .Fields.Count - 1 ' 循环字段
For i1 = 0 To i条件 ' 循环条件
模糊搜索 = 模糊搜索 & .Fields(i).Name & " Like '*" & s数组(i1) & "*' or " ' 组合字段和条件
Next
Next
.Close
End With
Set r字段 = Nothing
Set dbs = Nothing
模糊搜索 = " Where " & Left(模糊搜索, Len(模糊搜索) - 3) ' 去掉最后面的 "or ",加上" Where "
模糊搜索 = stsql & 模糊搜索
End Function
[ 本帖最后由 t小宝 于 2007-12-28 20:52 编辑 ] |
|