Me.Requery 似乎没有对表单执行任何操作

Me.Requery appears to be doing no action on form

我已经搜索并找到了很多关于在子表单上使用重新查询的信息,但我似乎找不到任何表明试图使用新记录集重新查询活动表单的信息。

我有一个基于查询的表单。我正在使用未绑定的文本框来捕获需要搜索的地址,然后更改查询中的 sql 语句以查找记录,然后尝试使用 me.requery 加载新结果。

代码正在更新 sql 语句,但表单未使用新记录结果重新查询。我的代码如下。

我对访问和 VBA 还很陌生,感谢您的智慧。另外,有什么我可以在其他代码中做的事情会导致失败吗?


Private Sub Command51_Click()

Dim d As DAO.Database
Dim q As DAO.QueryDef
Dim Addy As String
Dim Search As String


Set d = CurrentDb()
Set q = d.QueryDefs("SQL_Search")

If IsNull(Me!Addy) Then
    MsgBox ("Please select a valid address from the list and try again.")
    GoTo CleanUp
Else: End If

Addy = Me!Addy

Search = "select * from dbo_ECNumberVerify Where (((dbo_ECNumberVerify.invalidrecord)=False) AND ((dbo_ECNumberVerify.updated)=False) AND ((dbo_ECNumberVerify.Locations) Like '*" & Addy & "*'));"

'Send SQL SP execute command.
q.SQL = Search

Me.Requery

CleanUp:

Set q = Nothing
Set db = Nothing

End Sub

在您的示例中,您有一个查询,但该查询从未设置或附加到 "any way" 中的表单记录源。所以“查询”独立于表单数据源。

您可以像这样将 sql 直接填入表单 reocrdsouce 中:

Me.RecordSource = Search

(因此您不需要所有现有代码,也不需要 queryDef。

并且当您直接按照上述方式设置表单 SQL 时,系统会自动为您完成重新查询。所以所需的代码将如下所示:

Dim strSearch     As String

If IsNull(Me.Addy) Then
   MsgBox ("Please select a valid address fromthe list and try again.")
   Exit Sub
End If

strSearch = "select * from dbo_ECNumberVerify WHERE " & _
            "(invalidrecord = False) AND (updated = False) AND " _
            "(Locations Like '*" & Addy & "*')"
Me.RecordSource = strSearch

所以你不需要太多代码,你真的根本不需要使用 + 声明 querydef。