如果附件为零,如何在报表上隐藏附件(图像)对象?

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 从控件设置为可以收缩 = 是。我确实错过了您希望在主报告中保持一致 = 否 - 这可能是您所缺少的。我已将此编辑评论添加到帖子的末尾。 你还必须使用打印预览——由于某种原因报告视图这个技巧不起作用。

以上是关于如果附件为零,如何在报表上隐藏附件(图像)对象?的主要内容,如果未能解决你的问题,请参考以下文章

Rails:无法将图像解析为 URL:to_model 委托给附件,但附件为零 Rails 5.2

润乾报表的附件上传?

如何在 MS Access 中隐藏空子报表上的按钮?

iOS indexPath 为 nil(自定义附件图片)

如何删除从 wordpress 上的图像附件生成的页面?

报表中如何控制附件的上传和下载权限