报表知识库
我要提问

巧用报表函数下标

需求背景

         有客户提出这样的需求,有个消防设施表(内建数据集 ds1 ),有个消防设施更换记录表(内建数据集 ds2 ),这两个表是一对多的关系(一个消防设施对应多个更换记录),通过更换记录表的 设施ID 关联。

要实现的报表如图,也就是循环输出消防设施的同时,横着输出它的更换记录(注意:一个设施可以有三次更换记录,不足三次的空着,不用考虑多于三次的情况)

291

需求分析

         上述需求可以概括为:报表中将数据库中一对多的两个表数据输出在同一行中。由于客户已经指定了两个数据集,所以我们需要在此基础上进行实现。由于一个设施ID最多对应三条更换记录,所以我们可以将所有更改记录列举出来,没有该记录的显示为空即可。

         于是,我们想到了润乾报表函数中诸如ds.select以及split等扩展函数都是可以带下标的,我们只需要将下标写到第三个即可。

实现步骤

         首先设计报表,如图:

301

我们在I4中写入表达式:=ds2.select(更换日期,,设施ID==C4)[1],希望通过select函数的下标解决该问题,但是预览时发现报错:

311

初步分析不允许这样使用是由于select函数机制以及条件中写入的C4为扩展格导致。我们必须改变实现方式。

将I4表达式改为:=list(ds2.select(更换日期,,设施ID==C4))[1]

J5表达式:=list(ds2.select(更换日期,,设施ID==C4))[2]

K5表达式:=list(ds2.select(更换日期,,设施ID==C4))[3]

预览效果如图:

321

成功实现该需求。

标签: