【发布时间】:2018-05-14 20:29:58
【问题描述】:
我目前正在运行 Access 2007。我有一个允许用户设置参数的报告管理器。自定义日期并允许选择需要修改的日期字段(timecreated、timemodified、txndate)。报告方面工作完美。
在报告(totalshipped)中,用户可以双击报告正文,它会从“大图”摘要转到详细报告(totalshippeddetailed)。 基本上,为了使其正常工作,totalshipped 中的日期和正文中的客户名称(双击)需要在打开时在 totalshippeddetailed 报告中匹配。这是我尝试过的一个示例:
Private Sub ftrReport_DblClick(Cancel As Integer)
DoCmd.OpenReport "TotalShippedDetailed", acViewReport, "", me.filter
End Sub
报告成功打开并将过滤器属性(日期)传递到totalshipped详细报告中,问题是我需要引用[customerref_fullname](客户)以及我使用此行所做的:
[reports]![TotalShipped]![customerref_fullname] = [customerref_fullname]
这可以作为对客户的引用,但我需要将 me.filter 属性与对 customerref_fullname 的引用结合起来,尝试时出错:
Private Sub ftrReport_DblClick(Cancel As Integer)
DoCmd.OpenReport "TotalShippedDetailed", acViewReport, "", me.filter & _
[reports]![TotalShipped]![customerref_fullname] = [customerref_fullname]
End Sub
我尝试了另一种可行的方法,但不允许报告的详细版本被除 [txndate] 之外的任何内容过滤:
DoCmd.OpenReport "TotalShippedDetailed", acViewReport, "", _
"[reports]![TotalShipped]![customerref_fullname] = [customerref_fullname] and [txndate] >= [forms]![frmrptdatemanager]![txtstartdate] And [txndate] <= [forms]![frmrptdatemanager]![txtenddate] "
最后,我使用了上面的代码,并尝试以会报错的形式引用日期字段本身:
DoCmd.OpenReport "TotalShippedDetailed", acViewReport, "", _
"[reports]![TotalShipped]![customerref_fullname] = [customerref_fullname] and [forms]![frmrptdatemanager]![cboDateField] >= [forms]![frmrptdatemanager]![txtstartdate] And [forms]![frmrptdatemanager]![cboDateField] <= [forms]![frmrptdatemanager]![txtenddate] "
我尝试了更多示例,但没有一个可以实现我的目标:允许用户双击报告正文以查看与主报告相同日期范围的客户的详细报告。
请帮忙!!!!
【问题讨论】:
-
有一点是肯定的... me.filter & _ [reports]![TotalShipped]![customerref_fullname] = [customerref_fullname] 应该是 me.filter & " 和 " & [reports]! [TotalShipped]![customerref_fullname] & " = """ & [customerref_fullname] & """" .... 或类似的东西...检查结果字符串,它必须看起来像一个合法的过滤器。如果这解决了您的问题,那么我们可以忽略其他死胡同。
-
上面的建议只有在 me.Filter 不是空字符串的情况下才有效!我建议您首先编写一个好的过滤器字符串,然后使用该过滤器字符串而不是长连接的东西进行调用。更容易阅读,更容易调试。
-
me.filter 永远不会是空字符串,因为打开报告的唯一方法是将字符串传递给它。我不太确定如何简化它,但我会为上面的内容试一试。 @Triwaters问题是字符串不是静态的。它会一直由用户更改。
-
我仍然收到类型不匹配错误。我最初是怎么做的和上面的解决方案
标签: ms-access vba ms-access-2007