我有一个名为"搜索问题'和调用中的子表单"浏览所有问题"。浏览所有问题记录源是一个包含所有称为问题的数据的表。我试图在"搜索问题"中创建搜索功能。我可以从列表框中选择多个条件,当我单击搜索浏览所有问题时,根据我选择的条件过滤。我目前的代码如下:
Private Sub Search_Click()
On erorr GoTo errr
Me.Search.Form.RecordSource = "SELECT * From Browse_All_IssuesSubform " & BuildFilter
Me.Search.Form.Requery
Exit Sub
errr:
MsgBox Err.Description
End Sub
Private Function BuildFilter() As Variant
Dim strWhere As String
strWhere = IIf(Len(Me.AssignedTo & "") <> 0, "([AssignedTo] Like ""*" & Me.AssignedTo & "*"") AND", "") & _
IIf(Len(Me.OpenedBy & "") <> 0, "([OpenedBy] Like ""*" & Me.OpenedBy & "*"") AND", "") & _
IIf(Len(Me.Status & "") <> 0, "([Status] Like ""*" & Me.Status & "*"") AND", "") & _
IIf(Len(Me.Category & "") <> 0, "([Category] Like ""*" & Me.Category & "*"") AND", "") & _
IIf(Len(Me.Priority & "") <> 0, "([Priority] Like ""*" & Me.Priority & "*"") AND", "") & _
IIf(Len(Me.OpenedDateFrom & "") <> 0, "([EnteredOn] >= #" & Format(Me.OpenedDateFrom, "mm/dd/yyyy") & "#) AND", "") & _
IIf(Len(Me.DueDateFrom & "") <> 0, "([EnteredOn] <= #" & Format(Me.DueDateFrom, "mm/dd/yyyy") & "#) AND", "")
If Len(strWhere & "") = 0
Then
MsgBox "No criteria", vbInformation, "Nothing to do."
Else
Me.Filter = Left(strWhere, Len(strWhere & "") - 4)
Me.FilterOn = True
Me.Requery
End If
BuildFilter = strWhere
End Function
我怎样才能让他上班?当我运行该事件时,我收到消息&#34;编译错误&#34; :找不到方法或数据成员。
请帮忙
答案 0 :(得分:0)
如果它运行没有错误但没有正确过滤,你可能会错误地发现WHERE
子句。
首先,您正在构建的SQL字符串中完全缺少WHERE
这个词!
但我不知道是不是全部 在不知道您的数据库表(定义和里面的数据!)的情况下,我们很难在您的查询中发现任何错误。
所以你应该一步一步地试着找出答案:
在Search_Click()
子句中,将最终的SQL字符串输出到立即窗口:
Debug.Print "SELECT * From Browse_All_IssuesSubform " & BuildFilter
创建一个新的Access查询,切换到SQL视图,复制&amp;从立即窗口粘贴SQL字符串。尝试运行查询。
它返回的行数多于预期吗?
然后WHERE
子句中缺少一些东西。查看您不希望返回的行,并考虑需要添加到WHERE
子句中以使它们从结果集中消失的内容。
它返回的行数少于预期(或根本没有)?
然后你过滤太多了。尝试逐步删除WHERE
子句的部分内容,每次再次运行查询,直到获得所需的所有行。
这足以让你指出正确的方向 如果您仍然无法找到错误,我们需要更多更多信息。