我有这个非常令人沮丧的问题,由于访问技术性,可能会或可能无法修复,但无论如何我都会问。
在报告中,我有多个显示文档列表的子报告;并且这些子报告中的信息由网格概述,因此看起来文档在表格中。
我的问题是,如果这些物体的边界太近,那么有时网格线/边框轮廓在某些区域较厚而在其他区域则不然。为什么是这样?它使得报告看起来非常不一致且无法表达。
解决此问题的唯一方法是在对象和表单的边框部分之间留一个空格。但是这意味着这些文件是分开的,看起来就像是在他们自己的桌子里,而不是一个大桌子,如果这是有意义的吗?
我似乎无法找到任何解决方案。如果您知道如何解决这个问题或者能够提供替代解决方案,我将非常感激!
请参阅附图:
更新:我想添加一下,当我在“报告视图”中查看报告时;它被正确呈现。只有当我在“打印视图”中查看时,才会出现此不一致情况。或者如果我将其导出。
答案 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
<强>结果:强> 所有行现在都是一致的
答案 1 :(得分:0)
我想知道如果你将子报告放在数据表视图中会发生什么?
否则我通常会使用线条粗细,并确保控制,剖面和子图形高度设置完全,并使用对齐工具将子报表推到一起。
或者,作为最后的手段,我会废弃整个东西并将这些碎片装入表中,然后根据该表制作一个子报告。但我不知道你的规定是什么。