子表单在 MS Access 中的主表单之前打开

Posted

技术标签:

【中文标题】子表单在 MS Access 中的主表单之前打开【英文标题】:Sub form opens before the main form in MS Access 【发布时间】:2018-07-14 03:41:53 【问题描述】:

我有一个主窗体,其中包含在 MS Access 中创建的两个子窗体。主窗体上有两个文本框。用户在文本框中输入开始和结束日期,并点击搜索按钮后,这两个子表单中的信息应重新计算并刷新子表单上的结果并显示在主表单中。

有一次,我把一个子表单的数据源改了,保存了,不知道是不是这个问题。现在,在用户输入日期并搜索结果后,其中一个子表单首先会自行打开并显示正确的结果。用户关闭此子表单后,带有两个子表单的主表单会显示正确的结果。

如何阻止第一个子表单首先弹出,只显示主表单和两个子表单?

感谢您的帮助!

【问题讨论】:

删除子表单的数据源。 数据源未打开表单。您必须更改了搜索按钮的代码。 显示搜索按钮后面的代码以获得好的答案。 感谢您的回复。我再次检查了弹出打开结果,准确地说,它是我之前更改一次以替换原始子表单记录源的查询1的结果,而不是子表单本身弹出打开。现在我为这个子表单的记录源使用了一个新的 query2。我没有更改搜索按钮的任何代码。出于某种原因,即使该子表单的当前记录源是query2,程序始终会记住query1并在主表单显示子表单之前单击搜索按钮后弹出。我怎样才能阻止这个弹出的 query1 显示?非常感谢! 【参考方案1】:

子表单总是在主表单之前打开,请参阅下面的表单事件顺序。为了避免先弹出子表单,您可以在表单加载时将子表单记录源设置为空。

Order of events for database objects

【讨论】:

感谢您的回复。准确地说,这是我之前更改过一次以替换原始子表单记录源的 query1 的结果,而不是子表单本身突然打开。对不起。请在上面查看我的详细信息,非常感谢您的反馈! 当我替换子表单的原始记录源时,我直接在子表单上进行了更改并保存了更改,在主表单中不起作用。这是否导致了问题的发生? 我会建议您先清除子表单的记录源属性,然后单击按钮进行设置。试试这个,如果没有显示您的代码,以便我们提供帮助。 Private sub Output_Results_Click() '删除查询以删除输出表中的所有记录 DoCmd.OpenQuery “Output_Records_Del” '根据用户在开始时输入的日期将新记录上传到输出表的附加查询和结束日期文本框。 DoCmd.OpenQuery “Output_Records_App '删除查询以删除 Output Total 表中的所有记录 DoCmd.OpenQuery “Output_Total_Del” '将交叉表查询附加到 Output Total 表 DoCmd.OpenQuery “Output_Total_App” '刷新子表单 [Output_Records 子表单].Requery [Output_Total 子表单].重新查询结束子 交叉表总是在主窗体打开之前弹出。我已经绑定清理子表单属性上的记录源和子表单记录源的搜索按钮中的vba代码,但同样的事情再次发生。有什么建议吗?

以上是关于子表单在 MS Access 中的主表单之前打开的主要内容,如果未能解决你的问题,请参考以下文章

MS Access = 引用子表单中的控件

MS Access 子表单的多个分离条件

MS Access:如何根据子表单中的字段打开表单

根据 Access 列表框中的选择打开子表单

MS-Access - 从超链接数据单击打开表单

MS Access:数据表属性(作为子表单)- 表单未打开,错误:2489?