无法从表单/子表单重新查询
Posted
技术标签:
【中文标题】无法从表单/子表单重新查询【英文标题】:Can't get requery to work from form/subform 【发布时间】:2017-10-24 18:34:25 【问题描述】:背景: 我正在尝试将新表单添加到使用 Access 2003 创建的旧 Access 数据库中。以前的表单基于表,但新表单的字段基于查询。
我有一个名为 MasterList 的表单,其子表单为 MasterList_Sub。 MasterList 包含我想用来过滤 MasterList_Sub 的文本框,以及一个搜索和清除按钮。 MasterList_Sub 显示在下方。
我从其他表单中修改了搜索按钮的 VBA,但它似乎不起作用。以下是工作表单中的代码:
Private Sub SEARCH_Click()
Forms!mrtgref!Mrtgref_sub.Requery
End Sub
我的代码很简单
Private Sub SEARCH_Click()
Forms!MasterList!MasterList_Sub.Requery
End Sub
当我按下搜索按钮时,似乎发生了一些事情,但子表单没有更新。我是 Access 编程的新手,但根据我读过的内容,这段代码看起来太简单了,就像我遗漏了一些东西一样。我在数据库中找不到任何其他 VBA 模块,并且这些字段的设置与其他数据库类似。关于如何从这里开始的任何想法?
另外,我尝试了一些其他语法,但当它不起作用时,我收到一个以“Mortgagee Inquiry can't find...”开头的错误,它从哪里得到 Mortgagee Inquiry 的名称?
【问题讨论】:
请澄清:子表单记录源是否基于查询,如果是,请发布sql。如果是查询,它会过滤表单字段吗?其次,子表单是否使用“链接主/子”指针链接到主表单? 子表单是基于一个查询,下面是SQL。我在链接主/子字段中没有任何内容。我正在查看的其他表单示例也将这些字段留空,并且它们正在工作。我确实尝试将 MRTG_CD 用于链接主机,然后它将适用于该字段,但不适用于任何其他字段。我希望任何字段(总共 12 个)都可以用作过滤器 SELECT Mortgagee.MORTGAGEE_CD,Mrtglist.MRTG_TB,Mortgagee.PLCY_MRTG_CO_NAME1,Mortgagee.PLCY_STREET_ADDR1,Mortgagee.PLCY_CITY_NAME,Mortgagee.PLCY_STATE_CODE,Mortgagee.PLCY_ZIP_CODE,Mrtglist.MRTG_TYPE,Mrtglist.MRTG_CNT,Mortgagee.BILL_MRTG_CO_NAME1,抵押.BILL_STREET_ADDR1, Mortgagee.BILL_CITY_NAME, Mortgagee.BILL_STATE_CODE, Mortgagee.BILL_ZIP_CODE FROM Mortgagee INNER JOIN Mrtglist ON Mortgagee.MORTGAGEE_CD = Mrtglist.MRTG_CD; 我看到您的主表单和子表单之间没有可以过滤记录的链接,因此这就是它不起作用的原因。您有多种选择,但最直接的方法是使用主窗体 VBA 为子窗体设置过滤器: Me.MasterList_Sub.Form.Filter = "MasterList_Sub
是一个子窗体控件。 .Requery
是 Form 本身的一个方法,因此您需要在 .Requery
之前添加 .Form
。
结构:
Forms!MainForm!SubformControl.Form.Requery
在你的情况下:
Forms!MasterList!MasterList_Sub.Form.Requery
【讨论】:
谢谢!这对我来说很有意义,但仍然无法正常工作。似乎后台发生了一些事情,但子表单没有更新。以上是关于无法从表单/子表单重新查询的主要内容,如果未能解决你的问题,请参考以下文章