2

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

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

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

我使用访问 2003。

4

1 回答 1

4

以对话模式打开AdmForm以强制程序AdmReportReport_Open用户输入日期值时等待Admform

MyAdmForm包含一个名为 的命令按钮cmdOK,它的单击事件以隐藏模式重新打开表单,从而允许AdmReportReport_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

请注意,我包含了一个Report_Close()用于AdmReport. 目的只是关闭(现在隐藏)AdmForm

于 2012-07-08T04:26:43.503 回答