我有一个名为rptClientCareAll的父报告。它由3个子报告控件组成。用户可以选择隐藏其中一个子报表的详细信息(如果相关,则这是用于隐藏子报表详细信息的代码:me.detail.visible = false
)。
问题#1:当我独立于父报告打开子报告时(有时报告将显示为独立报告,有时显示为子报告,因此我需要它在两种情况下都能工作),细节被隐藏,但是报告没有“重新粉刷” - 所以,报告看起来很乱,因为页脚现在显示在标题的正下方,但细节没有从屏幕上“擦除”。如何“重新绘制”报告以删除详细信息?可以重新绘制表单,但我似乎无法重新绘制报表。
问题2:当我打开父报表然后选择隐藏子报表上的详细信息时,细节被正确隐藏并“擦除”(与上面的问题#1不同;很奇怪!),但是,子报表的大小不会缩小因此,隐藏细节的整个点都丢失了,因为在父报表上有大量的空白区域,其中包含子报表的详细信息。隐藏细节时,如何让子报表缩小?我已经尝试将所有报告(包括父报表和子报表)的详细信息部分'可以增长和可以收缩属性设置为是,但这没有帮助。
注意:我在acReportView中显示报告,而不是acViewPreview。这似乎可能会对触发的事件产生影响?
因此,在用户选择隐藏详细信息部分之后,基本上问题#1(报告独立打开,而不是作为子报告)由简单的Me.Requery解决。
如果没有关闭并重新加载报告,问题#2显然无法解决,这比我的情况要容易一些。
对于我的情况,我添加了代码来执行以下操作:
它很笨重,但这是我能找到的唯一方法,可以根据需要完成隐藏和缩小细节部分。
在ON LOAD事件中使用以下代码:
Private Sub Form_Load()
Dim C As Control
For Each C In Me.Form
If TypeOf C Is TextBox Then
If IsNull(C) Or C = "" Or C = 0 Or C = "0" Then
C.Visible = False
C.Height = 0
Else
C.Visible = True
End If
End If
Next C
Me.Requery
End Sub