Microsoft Access报表中如何使所有gridlines/borders保持一致
How to make all gridlines/borders consistent in Microsoft Access Report
我有一个非常令人沮丧的问题,由于访问技术问题可能无法解决,但我还是要问一下。
在一个报表上,我有多个显示文档列表的子报表;并且这些子报告中的信息由网格概述,因此文档看起来像是在 table.
中
我的问题是,如果我让这些对象的边界太近,那么有时 gridline/border 轮廓在某些区域会更粗,而在其他区域则不会。为什么是这样?这让报告看起来非常不一致和不真实table。
解决这个问题的唯一方法是在对象和表单的边框部分之间留一个 space。但这意味着文档被拆分并且看起来像是在它们自己的 table 中,而不是一个大的 table 如果这有意义的话?
我似乎根本找不到任何解决方案。如果您知道如何解决这个问题或可以提供替代解决方案,我将不胜感激!
请看附件图片:
更新: 我想补充一点,当我在 'Report View' 中查看报告时;它显示正确。只有当我在 'Print view' 中查看它或导出它时才会出现这种不一致。
我想知道如果将子报表置于数据表视图中会发生什么情况?
否则我通常会调整线条粗细,并确保控件、部分和子窗体的高度设置准确,并使用对齐工具将子报表放在一起。
或者,作为最后的手段,我会放弃整个事情并将这些部分加载到 table 中,然后根据它制作一个子报表。但是我不知道你的规定是什么
不幸的是,我无法找到一个简单的答案来解释为什么访问会造成这些不一致。但是,我确实找到了解决问题的解决方法。
以此为参考:https://msdn.microsoft.com/en-us/library/office/aa221362(v=office.11).aspx
- 在报表上的对象下方添加一条水平线。这将分隔文档行
为了获得垂直线,我不得不通过 VBA 代码插入它们。这是因为当对象变大时,我无法让垂直线扩展
Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
Dim ctrl As Control
Dim intLineMargin As Integer
' This is the spacing between the right edge of the
' control and the Vertical Seperation Line
intLineMargin = 0
通过选择标签来遍历子报表详细信息部分中的每个控件。第一个对象(文档)有一个额外的步骤,因为您需要在左侧和右侧都有垂直线。
第一个 if 语句在左侧和右侧为所有带有标签 'DocumentName' 的控件创建行(在本例中,只有第一个对象)
For Each ctrl In Me.Section(acDetail).Controls
With ctrl
If ctrl.Tag = "DocumentName" Then
Me.Line (0, 0)-(0, 0 + .Height + 150)
Me.Line ((.Left + .Width), 0)-(.Left + .Width + intLineMargin, .Height + 150)
End If
其余对象具有标签 'DocumentDetails',只需要在 RIGHT 侧画竖线。 if 语句创建这些垂直线:
If ctrl.Tag = "DocumentDetails" Then
Me.Line ((.Left + .Width), 0)-(.Left + .Width + intLineMargin, .Height + 150)
End If
End With
Next
Set ctrl = Nothing
End Sub
结果:
现在所有行都是一致的
我有一个非常令人沮丧的问题,由于访问技术问题可能无法解决,但我还是要问一下。
在一个报表上,我有多个显示文档列表的子报表;并且这些子报告中的信息由网格概述,因此文档看起来像是在 table.
中我的问题是,如果我让这些对象的边界太近,那么有时 gridline/border 轮廓在某些区域会更粗,而在其他区域则不会。为什么是这样?这让报告看起来非常不一致和不真实table。
解决这个问题的唯一方法是在对象和表单的边框部分之间留一个 space。但这意味着文档被拆分并且看起来像是在它们自己的 table 中,而不是一个大的 table 如果这有意义的话?
我似乎根本找不到任何解决方案。如果您知道如何解决这个问题或可以提供替代解决方案,我将不胜感激!
请看附件图片:
更新: 我想补充一点,当我在 'Report View' 中查看报告时;它显示正确。只有当我在 'Print view' 中查看它或导出它时才会出现这种不一致。
我想知道如果将子报表置于数据表视图中会发生什么情况?
否则我通常会调整线条粗细,并确保控件、部分和子窗体的高度设置准确,并使用对齐工具将子报表放在一起。
或者,作为最后的手段,我会放弃整个事情并将这些部分加载到 table 中,然后根据它制作一个子报表。但是我不知道你的规定是什么
不幸的是,我无法找到一个简单的答案来解释为什么访问会造成这些不一致。但是,我确实找到了解决问题的解决方法。
以此为参考:https://msdn.microsoft.com/en-us/library/office/aa221362(v=office.11).aspx
- 在报表上的对象下方添加一条水平线。这将分隔文档行
为了获得垂直线,我不得不通过 VBA 代码插入它们。这是因为当对象变大时,我无法让垂直线扩展
Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer) Dim ctrl As Control Dim intLineMargin As Integer ' This is the spacing between the right edge of the ' control and the Vertical Seperation Line intLineMargin = 0
通过选择标签来遍历子报表详细信息部分中的每个控件。第一个对象(文档)有一个额外的步骤,因为您需要在左侧和右侧都有垂直线。
第一个 if 语句在左侧和右侧为所有带有标签 'DocumentName' 的控件创建行(在本例中,只有第一个对象)
For Each ctrl In Me.Section(acDetail).Controls
With ctrl
If ctrl.Tag = "DocumentName" Then
Me.Line (0, 0)-(0, 0 + .Height + 150)
Me.Line ((.Left + .Width), 0)-(.Left + .Width + intLineMargin, .Height + 150)
End If
其余对象具有标签 'DocumentDetails',只需要在 RIGHT 侧画竖线。 if 语句创建这些垂直线:
If ctrl.Tag = "DocumentDetails" Then
Me.Line ((.Left + .Width), 0)-(.Left + .Width + intLineMargin, .Height + 150)
End If
End With
Next
Set ctrl = Nothing
End Sub
结果: 现在所有行都是一致的