Ms access 如何使Microsoft Access报告中的所有网格线/边框保持一致

Ms access 如何使Microsoft Access报告中的所有网格线/边框保持一致,ms-access,report,Ms Access,Report,我有一个非常令人沮丧的问题,由于访问技术问题,这个问题可能无法解决,但我还是要问一下 在一个报告中,我有多个子报告显示文档列表;这些子报告中的信息由一个网格概括,因此看起来像是文档在一个表中 我的问题是,如果这些对象的边界太近,则有时某些区域的网格线/边界轮廓较厚,而其他区域的网格线/边界轮廓较厚。为什么会这样?这使得这份报告看起来真的前后矛盾,不可表述 解决这个问题的唯一办法是在物体和形状的边界部分之间留出一个空间。但这意味着文档被拆分,看起来像是在自己的表中,而不是一个大表中,如果这有意义的

我有一个非常令人沮丧的问题,由于访问技术问题,这个问题可能无法解决,但我还是要问一下

在一个报告中,我有多个子报告显示文档列表;这些子报告中的信息由一个网格概括,因此看起来像是文档在一个表中

我的问题是,如果这些对象的边界太近,则有时某些区域的网格线/边界轮廓较厚,而其他区域的网格线/边界轮廓较厚。为什么会这样?这使得这份报告看起来真的前后矛盾,不可表述

解决这个问题的唯一办法是在物体和形状的边界部分之间留出一个空间。但这意味着文档被拆分,看起来像是在自己的表中,而不是一个大表中,如果这有意义的话

我似乎根本找不到任何解决办法。如果您知道如何解决此问题或能提供其他解决方案,我将不胜感激

请参阅所附图片:

更新:我想补充一点,当我在“报告视图”中查看报告时;它被正确地呈现。只有在“打印视图”中查看或导出时,才会出现这种不一致


我想知道如果将子报表设置为“数据表”视图,会发生什么情况

否则,我通常会使用线条厚度,并确保控件、剖面和子窗体的高度设置准确,然后使用“对齐”工具将子报表推到一起


或者,作为最后的手段,我会把整个东西都扔掉,然后把这些部分放到一个表中,然后根据这个表生成一个子报表。但我不知道你的规定是什么。

不幸的是,我找不到一个简单的答案来解释为什么访问会造成这些不一致。然而,我确实找到了解决问题的方法

将此用作参考:

  • 在报告上的对象下方添加一条水平线。这将分隔文档行
  • 为了得到垂直线,我必须通过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
    
通过选择子报表详细信息部分中的每个控件的标记,循环遍历它们。第一个对象(文档)有一个额外的步骤,因为在左侧和右侧都需要垂直线

First if语句在左侧和右侧为标记为“DocumentName”的所有控件创建一行(在本例中,仅第一个对象)

其余的对象都有标签“DocumentDetails”,只需要在其右侧的垂直线即可。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
结果: 现在所有的线路都是一致的


您是否尝试过将它们稍微重叠,而不是让它们仅仅接触?在“设计”视图中选择项目后,ctrl+方向箭头将一次微调控件1个像素。@很遗憾,因为它是一个报告;在设计视图中,只有一个对象表示所有文档;因此,我不能让它们重叠。我将上传一张图片,试图说明我的意思哦,好的。也许可以使字段的边界透明,然后使用线控件来实现相同的效果?@MattHall Hi Matt。刚尝试过这个想法,但文档似乎可以根据字段中的字符数量向下扩展。然而这条线并没有向下扩展,所以它看起来就像是一堆小的线,如果这有意义的话?我想知道改变线的垂直锚定位置是否会有帮助?也就是说,把它放在底部,应该显示在细节部分(即每行数据)的底部。我已经讨论了厚度、高度和各种其他属性,但报告中总是有一些不一致的地方。我不知道为什么,因为其中一些对齐正确,而另一些没有对齐;这是没有意义的,因为它们的属性都是通过一个对象设置的(所以不是我在每个对象上都犯了人为错误),子报告是基于表创建的;它们显示的所有数据都来自已创建的表。我必须用我的一份有类似问题的报告来尝试这一点。问题/说明:1。我想知道
intLineMargin
-如果它是0,你会得到倾斜的垂直线,不是吗?2.
+150
是为了避免每条记录底部出现微小间隙吗?3.您是否尝试了
Me.Section(acDetail).Height而不是
ctrl.Height+150
?“这可能更准确些。”安德烈1。如果intLineMargin大于0,则为“是”,线条将倾斜。2.是的,尽管我发现它随物体的大小而变化;因此,它并不总是修复微小的间隙。3.不,我没有,尽管我不确定如何实现它?我使用ctrl键是因为我正在更改单个对象的属性,而不是整个acDetailsection@Andre 3. - 对不起,我现在明白你的意思了。我试过了,但它将线条高度设置为细节部分的高度,就好像它在“设计视图”中一样。因此,在“打印视图”3中引入并查看多个数据时,行不会扩展。啊,我明白了。谢谢你的检查。
        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