【问题标题】:Me.Requery appears to be doing no action on formMe.Requery 似乎没有对表单执行任何操作
【发布时间】:2015-06-08 20:13:13
【问题描述】:

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

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

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

我对 access 和 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

【问题讨论】:

  • 显示更新后的字符串。我可以验证所有内容,除了重新查询是否正常工作。如果我真的关闭并重新加载表单,数据会反映代码中的查询。

标签: ms-access vba ms-access-2010


【解决方案1】:

在您的示例中,您有一个查询,但查询从未以“任何方式”设置或附加到表单记录源。所以“查询”的行为独立于表单数据源。

您可以像这样简单地将 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。

【讨论】:

  • 非常感谢!这很好用。有时作为初学者(并且几乎总是自学成才)可能会很糟糕。非常感谢您的回复!
  • 在旁注中,您是否看到无法从原始代码运行重新查询的任何原因?我希望我也能理解为什么这不起作用。
  • @ChristaFoster 就像 Albert 说的那样,被请求的“查询”与与 q querydef 关联的查询无关,除非您将它们与 Me.RecordSource = strSearch 关联
  • 当您在代码中创建查询时,它会 100% 独立于表单运行。该代码甚至可以在没有打开表单的情况下运行。因此,当您编写代码并创建查询时,它们并不是通过“魔术”附加到某种形式的。因此,编写这样的代码允许您进行数据处理和数据更新——比如一些工资计算——这样的代码因此不知道或关联或附加到表单 reocrdset。您可以在代码中创建 10 个这样的查询——仅仅因为存在 10 个恰好附加到表格的表单,它们都是独立的对象。
猜你喜欢
  • 2013-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
  • 2022-01-19
相关资源
最近更新 更多