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

结果: 现在所有行都是一致的