【问题标题】:Access Report Running Queries Before Executing Report Open Event在执行报表打开事件之前访问报表运行查询
【发布时间】:2012-07-08 00:58:52
【问题描述】:

我有一个名为 AdmQuery 的查询、一个名为 Admform 的表单和一个名为 AdmReport 的报告。在 Admreport 的 Open_Event 中,我调用了 AdmForm 将开始日期和结束日期输入到两个未绑定的框,并使用它来执行查询并在报告中显示其结果。

这可行,但问题是当我运行报表时,报表上的查询和打开事件一起运行,因此表单本身与报表一起打开(最初没有数据)。因此我必须关闭报告,在表格上输入日期,然后通过表格上的另一个按钮预览报告,一切都很好。

有什么方法可以延迟访问报告仅在执行 Report_Open_Event 之后运行底层查询?

我使用 access 2003。

【问题讨论】:

    标签: ms-access vba ms-access-2003


    【解决方案1】:

    以对话模式打开AdmForm,强制AdmReportReport_Open过程等待用户在Admform中输入日期值。

    我的AdmForm 包含一个名为cmdOK 的命令按钮,它的单击事件以隐藏模式重新打开表单,这允许AdmReportReport_Open 过程继续进行。尽管AdmForm 现在已隐藏,但其文本框及其包含的值将可供AdmQueryAdmReport 的记录源)使用。

    这里是命令按钮点击事件的代码。

    Private Sub cmdOK_Click()
        DoCmd.OpenForm Me.Name, acNormal, , , , acHidden
    End Sub
    

    这是我的AdmReport 版本背后的代码。我使用 Access 2007 对其进行了测试,但相信它也应该适用于 Access 2003。

    Option Compare Database
    Option Explicit
    
    Const mcstrForm As String = "AdmForm"
    
    Private Sub Report_Close()
        DoCmd.Close acForm, mcstrForm
    End Sub
    
    Private Sub Report_Open(Cancel As Integer)
        DoCmd.OpenForm mcstrForm, acNormal, , , , acDialog
    End Sub
    

    请注意,我为AdmReport 添加了一个Report_Close() 过程。目的只是关闭(现已隐藏)AdmForm

    【讨论】:

    • 我发现让表单保持打开和隐藏通常很有用,因为相同的日期可能用于各种报告或再次打印相同的报告。当然,这在很大程度上取决于应用程序。
    • 谢谢各位,让我试试这个,我会回复你的!!
    • 优秀。我阅读了您之前的评论,说它不适用于 Access 2003,因此使用 2003 进行了测试。现在我回来了,我看到您还发现它适用于 Access 2003。
    • 是的,我忽略了一些东西,但一旦我纠正它 - 它就像一个魅力......再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 2021-06-16
    • 1970-01-01
    • 2011-04-27
    相关资源
    最近更新 更多