如果附件为零,如何在报表上隐藏附件(图像)对象?
Posted
技术标签:
【中文标题】如果附件为零,如何在报表上隐藏附件(图像)对象?【英文标题】:How can I hide an attachment (image) object on a report if there are zero attachments? 【发布时间】:2019-04-29 22:21:55 【问题描述】:我正在为 MS Access 数据库构建报告。该报告包含一个子表单,其中列出了有关项目的信息,包括一个包含图像的附件字段。
如果没有附件,行空间仍然被对象使用,导致报表中有很多不必要的空白空间。
如果没有图像,我需要将对象的大小调整为0x0
,并调整子报表的详细信息部分的大小。
我发现我可以使用以下命令来确定是否存在图像,但不知道将语句放入哪个事件或需要什么附加语法:
Me.attachPhoto.AttachmentCount
我找到了以下示例代码,用于调整附件/图像对象的大小,我认为可以对其进行修改以使其正常工作,但不知道将其放置在哪个事件中:
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
If IsNull(Me!Image20) Then
Me!Image20.Visible = False
Me!Image20.Height = 0
Me!Image20.Width = 0
ElseIf Not IsNull(Me!Image20) Then
Me!Image20.Visible = True
Me!Image20.Height = 2880
Me!Image20.Width = 2880
End If
End Sub
假设我可以弄清楚代码的放置位置并使其正常工作,但我仍然不知道如何更改子报表的详细信息部分的大小。
【问题讨论】:
该代码位于 Detail 部分的 Format 事件中,如Detail_Format
所示。格式事件仅针对 PrintPreview 或直接到打印机触发。我认为更改详细信息部分的高度将在报告格式事件中进行。使用缇,1440 缇 = 1 英寸:Me.Detail.Height = 1440
但可能只需要将 Detail 部分的 CanGrow 和 CanShrink 属性设置为 Yes。
我尝试将调整大小的代码放入报告格式事件中(在更正对象名称之后)。这打破了报告并出现错误:“[数据库名称] 与 OLE 服务器或 ActiveX 控件通信时出现问题。当事件无法运行时会发生此错误,因为无法评估事件逻辑的位置。例如,如果表单的 OnOpen 属性设置为 =[Field],则会发生此错误,因为宏或事件名称应在事件发生时运行。"
另外,我尝试在 Detail 部分设置 CanGrow/CanShrink 属性。它似乎根本没有改变行为。
抱歉,报告似乎没有 Format 事件。我曾使用 Report Header Format 事件进行测试。您的子报表是否只检索 1 条记录?
【参考方案1】:
一些事情:
首先,您不需要代码来执行此操作。
问题当然是图片控件没有内置的可以放大、可以缩小的设置。
但是,大多数控件都可以,尤其是子报表。
事实上,我建议以下技巧不仅适用于图片,而且如果它们没有值,通常你有一个“组”控件要缩小。问题是,虽然报表呈现系统可以很容易地折叠“一个”框,但一行上的多个控件通常不能折叠,因为有多个控件,然后 Access 无法弄清楚如何向上移动多个控件。
更糟糕的是,图片控件无法缩小。但是文本框和子报告确实缩小得相当好。
鉴于上述情况?
将提供的“项目”或组或图片移动到子报告中。
试试这个方法: 它不需要代码。 这是一种简单快捷的拖放方法。
只需创建空白的新报告。报告基于与现有报告相同的表格。
在此报告上启动查询生成器 - 是的以创建查询。
然后在查询构建器中执行以下操作:
现在,这个子报表只有在有图片的情况下才会返回记录。
从主报表中剪切图片控件(在设计模式下)。将其粘贴到此报告中。现在你有了一个只有图片控件的报告。并且只会出现带图片的记录(由于上述情况)。
现在,保存这个子报告——关闭它。
现在,您的主报表处于设计模式,只需从导航窗格中拖放子报表即可。
结果应该是这样的:
默认情况下,Access 应该(将)将主链接子项设置为 PK(这很好)。 (以防万一 - 请检查链接主子设置)
确保 main 上的子报表可以增长/可以缩小。像上面一样将其调整为 ONE 行。
只需单击几下鼠标,然后进行一些拖放操作,您就可以开始比赛了。
编辑
我也错过了主报告中的内容 - 您希望将主要详细信息部分设置在一起 = 否。您还需要使用打印预览 - 这似乎不适用于报告视图。
【讨论】:
Albert -- 我已经在使用子报表,但我想我明白你的意思了。会试一试的。 Albert - 我按照您的指示进行操作,但如果图片为空,则无法缩小图片子报表。 设置主报表的明细部分可以缩小=是。将 sub 从控件设置为可以收缩 = 是。我确实错过了您希望在主报告中保持一致 = 否 - 这可能是您所缺少的。我已将此编辑评论添加到帖子的末尾。 你还必须使用打印预览——由于某种原因报告视图这个技巧不起作用。以上是关于如果附件为零,如何在报表上隐藏附件(图像)对象?的主要内容,如果未能解决你的问题,请参考以下文章