搜索后找不到访问表单记录源

时间:2016-11-03 13:29:13

标签: forms ms-access

我开发了一个使用以下记录源的拆分表单:

SELECT * FROM [CCG Complaints];

表格效果很好,我对这方面没有任何问题。

用户有两个按钮:一个用于搜索,另一个用于显示所有记录。

在执行搜索后,关闭表单然后再次重新打开(在表单视图中)时出现问题:

enter image description here

但是,每当我在关闭表单之前单击Show all,它就会在表单视图中成功打开,没有错误。

另一个特点是,在收到上面提到的错误后,我可以在设计视图中打开表单,然后可以在表单视图中查看它而不会显示错误消息 - 只有在表单中打开表单时才会出现错误在第一个实例中查看。

为什么这样做以及我该怎么做才能纠正它?

我用于按钮的代码在这里:

Private Sub search_Click()
Dim strSearch As String
Dim strText As String
    If Len(Me.txtSearch.Value & vbNullString) = 0 Then
        MsgBox ("Enter a search term.")
    Else
        strText = Me.txtSearch.Value
        strSearch = "SELECT* from [CCG Complaints] where [Ref no] Like ""*" & strText & "*"" or [lastName] Like ""*" & strText & "*"" Or CCG Like ""*" & strText & "*"" "
        Me.RecordSource = strSearch
    End If
End Sub

Private Sub showAll_Click()
    Dim strSearch As String
    strSearch = "SELECT * from [CCG Complaints]"
    Me.RecordSource = strSearch
End Sub

2 个答案:

答案 0 :(得分:1)

不是更改记录源,而是将过滤器应用于现有记录。

Me.filter =  "[Ref no] Like  ""*" & strText & "*"" or [lastName] Like ""*" & strText & "*"" Or CCG Like ""*" & strText & "*"" "
Me.FilterOn = True

然后重置

Me.Filter = ""
Me.FilterOn = False

请注意,如果您的记录集稍微大一些,那么在许多字段上搜索这个通配符将变得非常低效。您可能希望查看更强大的搜索方法。这个http://allenbrowne.com/ser-62.html是一个更完整的解决方案。

答案 1 :(得分:0)

我建议将RecordSource设置为[CCG Complaints],而不是更改它。

而是使用.Filter属性,这是实现表单过滤器的常用方法:

Private Sub search_Click()
Dim strSearch As String
Dim strText As String
    If Len(Me.txtSearch.Value & vbNullString) = 0 Then
        MsgBox ("Enter a search term.")
    Else
        strText = Me.txtSearch.Value
        strSearch = "[Ref no] Like ""*" & strText & "*"" or [lastName] Like ""*" & strText & "*"" Or CCG Like ""*" & strText & "*"" "
        Me.Filter = strSearch
        Me.FilterOn = True
    End If
End Sub

Private Sub showAll_Click()
    Me.Filter = ""
    Me.FilterOn = False
End Sub