在 Access 2003 数据库中,我有一个通过 VBA 生成的员工状态/反馈报告。我在 VBA 中创建报告是因为所需的报告格式是这样的,我发现这样做对我来说更容易(组合多个记录集,显示与其他记录集对齐的记录集中的多个记录,自定义一些基于格式的格式化元素部门等)。可能有更好的方法来创建这些报告,但这运行得很好,所以我宁愿尽可能避免重新创建。
我的问题是:由于这是一份员工反馈表,因此主管希望能够看到一些细节,但不向员工展示。生成报告时,主管有机会审查数据/对报告本身进行更改(通过用户表单、报告上的事件处理)。审查的一部分是查看一组字段(作为标签添加到报告中),但在最终打印报告时应该隐藏这些字段。
在我的脑海中,我以为我以前见过一种以这种方式隐藏特定控件的方法,并进行了一些谷歌搜索以在DisplayWhen
. 但是,它似乎DisplayWhen
只能在表单上使用。有没有办法使用报告设置此值(或类似/相关选项)?在 SO 上进行搜索时,我在DisplayWhen的查询中只发现了一个问题,这对我没有帮助。
在创建报告时使用.Visible = False
该报告将不起作用,因为主管需要查看这些字段。我似乎无法在打印时设置此属性,因为我没有看到任何事件处理选项。我可以创建一个自定义事件处理程序来捕获打印命令吗?
这是控件创建代码:
Private Sub AddOneOnOneField(Rpt As Report, Left As Integer, Top As Integer, Width As Integer, Height As Integer, _
Optional Cap As String = vbNullString, Optional Align As Integer = cnFontCenter, Optional Size As Integer = 10, _
Optional Bold As Integer = cnBoldFont, Optional DisplayWhen As Byte = 0)
With CreateReportControl(Rpt.Name, acLabel, acDetail, vbNullString, vbNullString, _
Left, Top, Width, Height)
.Properties("FontSize") = Size
.Properties("FontWeight") = Bold
.Properties("BorderStyle") = 1
.Properties("TextAlign") = Align
.Properties("Caption") = Cap
.Properties("DisplayWhen") = DisplayWhen ' This does not work!
End With
End Sub
重申我的问题:
- 如何将某些报表字段设置为仅在打印预览中显示,而不在打印时显示?
- 我可以创建一个自定义事件处理程序来从报告中捕获打印命令吗?
- 有没有办法
DisplayWhen
在报告字段上设置属性(或类似/相关选项)?