繁体   English   中英

在新窗口中的Access中打开子窗体

[英]Open Subform in Access in New Window

我在访问中有一个表单(“ F_Filter”),其中表示过滤数据的参数。 F_Filter表单还包含一个子表单,该子表单在同一屏幕上显示过滤的数据表结果。 具有过滤结果的此子窗体被命名为“ Child400”。 它的源对象是“ F_FilterResults”。

我希望能够1)在新窗口中打开子窗体,这样我所看到的只是经过过滤的结果,以及2)将结果导出到Excel。

通常,我可以使用以下代码通过创建按钮并创建点击事件在新窗口中打开表单

DoCmd.OpenForm "NameOfForm", acFormDS

但是,当我将“ Child400”作为NameOfForm放入时,此代码不起作用。 我认为这是因为Child400是子窗体,并且Access无法识别。 我也尝试了DoCmd.OpenForm "[F_Filter]![Child400]", acFormDS无济于事。 请注意,我还尝试了DoCmd.OpenForm "F_FilterResults", acFormDS它可以正常工作,但此表仅包含预过滤的结果。

DoCmd.OpenForm "F_FilterResults"

是正确的表格。 “ Child400”是(我假设)子窗体控件的名称。 那不是您可以打开的表格。

然后,您需要对子表单实例应用相同的过滤器。 您现在在子表单中使用的相同方法可以用于单独的表单。

如果您对此有疑问,请在问题中添加现有的过滤器代码。

编辑

表单显示的内容背后没有魔术。 它由几个属性控制。 最简单的方法可能是将它们简单地转换为新表单。

就像是:

Sub OpenResults()

    Dim fSub As Form, fNew As Form

    Set fSub = Me!Child400.Form

    DoCmd.OpenForm "F_FilterResults", acFormDS
    Set fNew = Forms!F_FilterResults

    fNew.RecordSource = fSub.RecordSource   ' if you change the RecordSource in your code
    fNew.Filter = fSub.Filter
    fNew.FilterOn = fSub.FilterOn
    fNew.OrderBy = fSub.OrderBy
    fNew.OrderByOn = fSub.OrderByOn

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM