我有一个名为AdmQuery的查询、一个名称为Admform的表单和一个称为AdmReport的报告。在Open_Event for Admreport中,我调用了AdmForm,将开始日期和结束日期输入到两个未绑定的框中,并使用该框执行查询并在报告中显示查询结果。
然而,这是可行的,问题是当我运行报表时,对报表的查询和打开事件一起运行,因为窗体本身会与报表一起打开(最初没有数据)。因此,我必须关闭报告,在表单上输入日期,然后通过表单上的另一个按钮预览报告,一切都很好。
是否有任何方法可以延迟只有在执行report_Open_Event之后才运行底层查询的访问报告?
我使用access 2003。
在对话框模式下打开AdmForm
,以强制AdmReport
的Report_Open
过程等待,同时用户在Admform
中输入日期值。
我的AdmForm
包括一个名为cmdOK
的命令按钮,它的单击事件以隐藏模式重新打开表单,这允许AdmReport
的Report_Open
过程继续。虽然AdmForm
现在是隐藏的,但它的文本框及其包含的值将可用于AdmQuery
(AdmReport
的记录源)。
以下是命令按钮的单击事件的代码。
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
。