Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 更改Microsoft Access报告的组标题的可见性_Ms Access_Vba_Onload_Ms Access 2010 - Fatal编程技术网

Ms access 更改Microsoft Access报告的组标题的可见性

Ms access 更改Microsoft Access报告的组标题的可见性,ms-access,vba,onload,ms-access-2010,Ms Access,Vba,Onload,Ms Access 2010,我正在使用Access 2010创建几个报告,但我不知道如果组标题为空,如何隐藏组标题 假设我有一张这样的表格(注:我对汽车一无所知,这只是一个例子): 这个想法似乎可行,即如果我注释掉Visible=False行,我会在正确的位置得到红色或绿色背景,但是它完全忽略了高度选项。 如果我在其上放置Visible=False,则会抱怨无法将其放置在on-Paint事件中 我也尝试过在GroupHeader2的绘画活动中使用类似的代码,但没有效果。离我最近的一次,它就在那里闪烁着 我对vba有点陌生,

我正在使用Access 2010创建几个报告,但我不知道如果组标题为空,如何隐藏组标题

假设我有一张这样的表格(注:我对汽车一无所知,这只是一个例子):

这个想法似乎可行,即如果我注释掉Visible=False行,我会在正确的位置得到红色或绿色背景,但是它完全忽略了高度选项。 如果我在其上放置Visible=False,则会抱怨无法将其放置在on-Paint事件中

我也尝试过在GroupHeader2的绘画活动中使用类似的代码,但没有效果。离我最近的一次,它就在那里闪烁着

我对vba有点陌生,所以我可能遗漏了一些明显的东西,但目前我真的不确定如何继续,所以任何帮助都将不胜感激

编辑 为清楚起见:

报告的布局有点像这样:

H1 H2 H3 H4 DATA1 DATA2 DATA3 H1 氢 H3 H4 数据1数据2数据3 因此,对于上面的示例数据,它将显示为:

car chassis engine pistons data_a1 data_a2 data_a3 data_b1 data_b2 data_b3 data_c1 data_c2 data_c3 cylinder data_a1 data_a2 data_a3 data_b1 data_b2 data_b3 interior seats data_a1 data_a2 data_a3 data_b1 data_b2 data_b3 汽车 底盘 发动机 活塞 数据a1数据a2数据a3 数据b1数据b2数据b3 数据c1数据c2数据c3 圆柱 数据a1数据a2数据a3 数据b1数据b2数据b3 内部 座位 数据a1数据a2数据a3 数据b1数据b2数据b3

这是我想要避免的内部和座位之间的空白线(组头3)。


谢谢

您向我们显示的是列标题而不是组标题。如果其他标题仍然存在,更改H3的高度有什么意义?你不能那样节省空间

您可能希望通过将H3右侧的列向左移动H3的宽度来隐藏整个列H3。要做到这一点并不容易。您必须计算所涉及的文本字段和标签的位置,并在OnFormat事件中相应地更改其“左”位置

编辑:

使用组标题的格式化事件过程的Cancel参数:

Private Sub GroupHeader0_Format(Cancel As Integer, FormatCount As Integer)
    Cancel = IsNull(Me!H0)
End Sub

由于VBA代码从未在设计模式下运行,因此您只能在打印预览和打印时看到其效果。

这是一篇较旧的文章,但帮助我了解Access中标题的一些条件格式。我需要一个不同的标题后的第一页

Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer)
  Dim reportPageNumber As Integer
  Dim pageHeaderHeight As Double

  pageHeaderHeight = Me.PageHeaderSection.Height

  reportPageNumber = Me.Page
  Me.PageHeaderSection.Height = 0
  PageHeaderSection.Visible = False

  If reportPageNumber > 1 Then
    Me.PageHeaderSection.Visible = True
    Me.PageHeaderSection.Height = pageHeaderHeight
  End If
End Sub

对不起,我认为我解释得不够好,我的意思是,我在上面的表格是我作为报告基础使用的数据类型的一个例子。报告按H1、H2、H3进行分组,我希望在报告上节省空间。谢谢,我在问题中加入了一个更好的例子谢谢,你的编辑很好。请注意,对于其他可能尝试此功能的人,它仅在打印预览时起作用&打印时。它还应该在哪里起作用?你的VBA代码从来没有在设计模式下运行过。啊,但我不知道,所以我认为其他人也可能不这样做是合理的。
Private Sub GroupHeader0_Format(Cancel As Integer, FormatCount As Integer)
    Cancel = IsNull(Me!H0)
End Sub
Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer)
  Dim reportPageNumber As Integer
  Dim pageHeaderHeight As Double

  pageHeaderHeight = Me.PageHeaderSection.Height

  reportPageNumber = Me.Page
  Me.PageHeaderSection.Height = 0
  PageHeaderSection.Visible = False

  If reportPageNumber > 1 Then
    Me.PageHeaderSection.Visible = True
    Me.PageHeaderSection.Height = pageHeaderHeight
  End If
End Sub