赛捷软件论坛's Archiver

lynn.yu 发表于 2020-11-19 10:30

[PU9功能解说] 动态将X3中的图像抽取至水晶报表

[b]* 本文由赛捷软件(上海)有限公司翻译完成,未经授权不得转载。如需转载,请先联系相应版块的版主取得授权。[/b]


在X3的客户功能中,你可以上传一个标志。在本例中,我们将从公司记录中动态地将标志拉抽取至水晶报表中。这样,即使在X3中更新了公司标志,你的所有报表(、销售订单等)仍然可以使用最新的标志。我们将以X3客户订单确认函“ARCCLIENT”为例。

X3数据库表“ABLOB”中包含了图片信息。这里是我们抽取公司标志的地方。

[attach]6585[/attach]

BLOB_0栏包含以BLOB的形式存储在数据库里的实际图片。IDENT1_0栏则包含公司代码,是我们用来将公司记录连接到ABLOB表中的唯一键。在这一栏上进行连接,可以确保我们为每个公司抽取出正确的标志。

X3 中交付的大多数标准报表都在报表页眉中包含了logo2.rpt子报表。我们将使用该子报表在主报表中显示我们的公司标志。

第一步是将这个子报表移动到我想要显示标志的页眉处。下一步,调整子报表的大小到你的标志的尺寸。确保你在你的子报表上设置了“可以增大”属性。

[attach]6586[/attach]

接下来,我们将更改子报表的链接。这一步是我们如何将主报表中的公司代码作为参数传输给子报表。公司代码将被用作ABLOB表的记录选择标准。

在子报表上点击右键,选择“更改子报表链接(Change Subreport Links)”。

[attach]6587[/attach]

从主报表中选择COMPANY.CPY_0字段(客户表上的键),然后点击右边的箭头,将此字段链接到我们的子报表。

[attach]6588[/attach]

将主报表中的COMPANY.CPY_0字段链接到子报表中的ABLOB.INDENT1_0字段。如本文前面所示,ABLOB.INDENT1_0字段包含了公司代码。请确保勾选“根据字段选择子报表中的数据:”这个复选框,以便在子报表的选择公式中使用该参数。

[attach]6589[/attach]

接下来,在子报表上右击,选择“编辑子报表”。

[attach]6590[/attach]

从标准子报表中删除报表明细部分的所有字段。接下来,自ABLOB表中拖入BLOB_0字段。记住,该字段包含了公司标志的物理BLOB数据。

[attach]6591[/attach]

然后,我们需要删除标准报表交付的预先存在的选择标准。从子报表里面,导航到:报表->选择公式->记录。

[attach]6592[/attach]

当我们在文档中早期定义子报表链接时,添加了“{ABLOB.IDENT1_0}={?Pm-COMPANY.CPY_0}”这一行。该行以上的所有内容都包含在预交付的子报表中,且需要删除。

[attach]6593[/attach]

删除不需要的记录选择标准,验证公式后,点击“保存并关闭”。

[attach]6594[/attach]

现在,我们的主报表会把公司代码作为参数传输给子报表。子报表将使用公司代码从数据库中的ABLOB表中抽取适当的BLOB字段。然后,主报表将在你放置子报表的任意地方显示标志——在本例中,就是在页眉处。

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.