更新动态SQL后重新查询子窗体。

更新动态SQL后重新查询子窗体。,sql,ms-access,dynamic,subforms,Sql,Ms Access,Dynamic,Subforms,我有一个小型数据库,它在6个独立的车间协调工具。 选择要查看的店铺名称将更新qryInventory的SQL 很好,因此它可以查看正确的表,但我无法更新子窗体 我看了下一篇文章,发现了这段代码的几个变体, 但我根本没能让他们工作 Forms.Form\u UpdateInventoryForm.Form\u Inventory00.Requery语法为: [NameOfMainForm].[NameOfSubformControl].Form.Requery 如果您是从主窗体运行此命令,则可以

我有一个小型数据库,它在6个独立的车间协调工具。 选择要查看的店铺名称将更新qryInventory的SQL 很好,因此它可以查看正确的表,但我无法更新子窗体

我看了下一篇文章,发现了这段代码的几个变体, 但我根本没能让他们工作

Forms.Form\u UpdateInventoryForm.Form\u Inventory00.Requery

语法为:

[NameOfMainForm].[NameOfSubformControl].Form.Requery
如果您是从主窗体运行此命令,则可以使用我而不是[NameOfMainForm]。请注意使用子窗体控件的名称,而不是包含的窗体。表单和重新查询是一样的。表单是子表单控件的属性


更多信息:

我遇到了这个问题,包括重新查询子表单失败

至少在我的例子中,似乎解决了这个问题的方法是在父(主)窗体中清除子窗体控件的SourceObject属性,然后重置它。这假定设置了Form_Master

    Form_Master.SubformQuery.SourceObject = "" 'this is the important part
    Form_Master.SubformQuery.SourceObject = "Query.ListSearchQuery"
请注意,我正在做一件模糊的事情,即使用查询作为源对象。这似乎迫使Access查看新的sql,即使它在引用的查询中刚刚更改

希望这在正常情况下也能起作用。你可以把它概括成这样

    Dim sourceReset As String
    Dim Form_Master As Form_Master 

    Set Form_Master = Forms!Master
    sourceReset = Form_Master.SubformControl.SourceObject
    Form_Master.SubformControl.SourceObject = ""  'force reset
    Form_Master.SubformControl.SourceObject = sourceReset 

谢谢你的链接,它看起来像一个卓越的资源。我!Inventory00.Form.Requery工作正常,不会抛出任何错误,但我输入的测试数据使我有一个可视的Q。它告诉我实际数据没有变化,即使我单击基础查询时,它会生成正确的数据集。是否设置了链接子字段和主字段?店铺更改时是否替换子窗体记录源?正如Jeff O所建议的,如果所有这些数据都在同一个表中,您可以使用shop id(控件或字段)作为表单和子表单之间的链接,子表单将在选择新店铺时自动更新。我发现了Anwser,如果您查询动态sql并重新打开子表单,您会发现有相当多的人有此问题,似乎简单的重新询问在这里不起作用。Access一定在想,我已经调查过这个问题了。但是我们在bytes.com上有一个anwser.Wayne,他提供了这段代码,这段代码很有效,值得给予应有的支持。然而,对于优秀的链接,我知道它们将是无价的。BBme.subformname.form.recordsource=queryName只是一个建议,将所有商店放在同一个表中(除非它们有完全不同的字段),并添加一个ShopID字段。这样,您只需将shop ID设置为一个参数值,并避免使用动态sql。