访问VBA编码&表格链接

时间:2014-05-26 16:58:49

标签: ms-access access-vba

我有一个名为"搜索问题'和调用中的子表单"浏览所有问题"。浏览所有问题记录源是一个包含所有称为问题的数据的表。我试图在"搜索问题"中创建搜索功能。我可以从列表框中选择多个条件,当我单击搜索浏览所有问题时,根据我选择的条件过滤。我目前的代码如下:

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; :找不到方法或数据成员。

请帮忙

1 个答案:

答案 0 :(得分:0)

如果它运行没有错误但没有正确过滤,你可能会错误地发现WHERE子句。

首先,您正在构建的SQL字符串中完全缺少WHERE这个词!

但我不知道是不是全部 在不知道您的数据库表(定义和里面的数据!)的情况下,我们很难在您的查询中发现任何错误。

所以你应该一步一步地试着找出答案:

  1. Search_Click()子句中,将最终的SQL字符串输出到立即窗口:

    Debug.Print "SELECT * From Browse_All_IssuesSubform " & BuildFilter
    
  2. 创建一个新的Access查询,切换到SQL视图,复制&amp;从立即窗口粘贴SQL字符串。尝试运行查询。

  3. 它返回的行数多于预期吗? 然后WHERE子句中缺少一些东西。查看您不希望返回的行,并考虑需要添加到WHERE子句中以使它们从结果集中消失的内容。

  4. 它返回的行数少于预期(或根本没有)
    然后你过滤太多了。尝试逐步删除WHERE子句的部分内容,每次再次运行查询,直到获得所需的所有行。

  5. 这足以让你指出正确的方向 如果您仍然无法找到错误,我们需要更多更多信息。