我有一个名为AdmQuery的查询,一个名为Admform的表单和名为AdmReport的报告。在Admreport的Open_Event中,我已调用AdmForm将开始日期和结束日期输入到两个未绑定的框,并使用它来执行查询并在报告上显示其结果。
然而问题在于,当我运行报表时,报表上的查询和open事件一起运行,因为表单本身随报表一起打开(最初没有数据)。因此,我必须关闭报表,在表单上输入日期,然后通过表单上的另一个按钮预览报表,一切都很好。
有没有办法在执行Report_Open_Event后延迟运行基础查询的访问报告?
我使用access 2003。
答案 0 :(得分:4)
在对话框模式下打开AdmForm
,强制AdmReport
的{{1}}程序在用户输入Report_Open
中的日期值时等待。
我的Admform
包含一个名为AdmForm
的命令按钮,它的点击事件以隐藏模式重新打开表单,这允许cmdOK
的{{1}}过程继续。虽然AdmReport
现在已隐藏,但其文本框及其包含的值将可供Report_Open
(AdmForm
的记录来源)使用。
以下是命令按钮的点击事件的代码。
AdmQuery
以下是我的AdmReport
版本背后的代码。我使用Access 2007进行了测试,但相信它也适用于Access 2003。
Private Sub cmdOK_Click()
DoCmd.OpenForm Me.Name, acNormal, , , , acHidden
End Sub
注意我为AdmReport
添加了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
程序。目的只是关闭(现在隐藏)Report_Close()
。