在执行报表打开事件之前访问报表运行查询



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

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

是否有任何方法可以延迟只有在执行report_Open_Event之后才运行底层查询的访问报告?

我使用access 2003。

在对话框模式下打开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

最新更新