如何使Microsoft Access报告

时间:2016-02-11 16:13:13

标签: ms-access report

我有这个非常令人沮丧的问题,由于访问技术性,可能会或可能无法修复,但无论如何我都会问。

在报告中,我有多个显示文档列表的子报告;并且这些子报告中的信息由网格概述,因此看起来文档在表格中。

我的问题是,如果这些物体的边界太近,那么有时网格线/边框轮廓在某些区域较厚而在其他区域则不然。为什么是这样?它使得报告看起来非常不一致且无法表达。

解决此问题的唯一方法是在对象和表单的边框部分之间留一个空格。但是这意味着这些文件是分开的,看起来就像是在他们自己的桌子里,而不是一个大桌子,如果这是有意义的吗?

我似乎无法找到任何解决方案。如果您知道如何解决这个问题或者能够提供替代解决方案,我将非常感激!

请参阅附图:

更新:我想添加一下,当我在“报告视图”中查看报告时;它被正确呈现。只有当我在“打印视图”中查看时,才会出现此不一致情况。或者如果我将其导出。

This shows what the report looks like if I leave a gap between the objects and the form border. Creating a table that's split between each document, but the lines are consistent in width/colour/boldness

This image shows that when I leave no gaps, the table looks connected and complete. However, some of the lines are thicker/bolder than others.

I am unable to overlap the documents because it is only one object that represents all of the documents from a table

2 个答案:

答案 0 :(得分:2)

不幸的是,我无法找到简单答案,说明为什么访问会造成这些不一致。但是,我确实找到了解决问题的解决方法。

将此作为参考: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
    

通过选择子标记,遍历子报告的详细信息部分中的每个控件。第一个对象(Document)有一个额外的步骤,因为左侧和右侧都需要垂直线。

首先,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

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

Consistent table lines

答案 1 :(得分:0)

我想知道如果你将子报告放在数据表视图中会发生什么?

否则我通常会使用线条粗细,并确保控制,剖面和子图形高度设置完全,并使用对齐工具将子报表推到一起。

或者,作为最后的手段,我会废弃整个东西并将这些碎片装入表中,然后根据该表制作一个子报告。但我不知道你的规定是什么。