【发布时间】:2018-08-30 23:22:16
【问题描述】:
我在 MS Access (365) 中有一个表单,它接受各种选择标准并运行一个报告,这些标准内置在 DoCmd.OpenReport 命令的 wherecondition 中。报告通过带有 On Click VBA 代码的按钮运行,因为必须根据已选择的条件(如果有)来构建 where 条件。当我直接打开选择标准表单时,一切正常。我想通过导航表单打开选择标准表单,因为我希望在同一个导航表单中运行具有选择标准的其他类似报告。
如上所述,当我直接打开选择标准表单并运行报告时,一切正常,但当我通过导航表单尝试时,它不起作用。没关系,我在MS Dev Center site 上找到了一个解决方案,当我从导航表单运行选择标准表单(然后是报告)时该解决方案有效。一切都好。但是(当然)当我直接打开选择标准表单并运行报告时,单击代码按钮中的引用不起作用。我希望能够运行选择标准表单,然后从两个位置运行报告 - 直接从 MS Access 和通过导航表单。大概会有一些方法可以实现这一点,但是(正如我上面所说,我是 MS Access 和 VBA 的新手)我可能会花很多时间抓住阴影。希望有人能告诉我最简单的方法吗?
下面带有相关 cmets 的代码示例。在直接运行选择标准表格和报告时,注释为 AAA 工作正常的行,MsgBox ABB 和 DDD 以及超出所有显示的行;在通过导航表单运行它们时,行 BBB 工作正常,MsgBox ABB 和 DDD 以及其他所有显示(好吧,除了我还没有将 [NavigationSubform] 选项编码到所有其他 whereconditon 构建的东西之外,它们会显示)。当我切换 AAA 和 BBB 行(即,将另一行注释掉)MsgBox AAA 显示正常时,它会失败并显示:
找不到引用的表单“frmSelectSpeciesSiteDates”
在到达 MsgBox DDD 之前。
MsgBox "ABB"
'If Not Forms![frmSelectSpeciesSiteDates]![cboCommonName] = "" Then
' AAA Works when frmSelectSpeciesSiteDates is run directly
If Not Forms![frmNavSelectiveReports]![NavigationSubform].[Form]![cboCommonName] = "" Then
' BBB Works when frmSelectSpeciesSiteDates is called from a navigation form
strWhereCondition = strWhereCondition & "[common name] = " & Chr(34) & Me![cboCommonName] & Chr(34)
End If
MsgBox "DDD"
【问题讨论】:
-
表单未加载?检查
CurrentProject.AllForms("frmSelectSpeciesSiteDates").IsLoadedInstaed 的 MsgBoxes 使用 Debug:Print、Watches 和 Breakpointa 来查看代码的作用