finereport 使用超级链接并传递参数问题分析


在展示当前报表数据的同时,可能会希望实现数据的钻取。例如我点击城市名,可以查看该城市的历史空气

质量数据。

finereport 使用超级链接并传递参数问题分析_第1张图片

右击想要添加链接的单元格,选择进入,会看到可以有很多链接类型的选择。选择网络报表,可以选择不同的打开方式。然后点击P参数按钮,这里需要重点强调的是链接到另一张报表时,基本都会带上参数,选择公式,然后输入A4,可以想传递哪个参数就填写所在单元格。$$$为传递当前值。

以上只是传递固定的参数,当想让传递的参数发生变化时,则较为复杂。博主最近的项目里,用到了两张数据库表,这里面都有城市这一列,但是底层录入数据时,一个例如为合肥,另一个为合肥市,虽然是一字之差,但是对后期工作增加了很多难度。

当合肥与合肥,合肥市与合肥市之间互相传递时,可以直接传递当前值

注意:如果再展示的过程中,想让合肥的报表也展示带市的话,则只需要加一个条件属性,

finereport 使用超级链接并传递参数问题分析_第2张图片

此时,再直接传递当前值就会报错。解决办法:再加一条数据列,拖入城市,然后将其隐藏,作为实际传递的值。博主一开始并不是这么想的 ,而是人的惯性思维,想着怎么把当前值的市字去掉,后来一直很难实现。

然后就是合肥传到合肥市,我们需要在参数后面加字符,这是又会有新的问题出现,例如大兴安岭地区这些是不能加字符。就需要用到IF语句进行判断。

IF(or(LEN(SUBSTITUTE(A6, "区", "")) - LEN(A6) <> 0, LEN(SUBSTITUTE(A6, "盟", "")) - LEN(A6) <> 0, and(LEN(SUBSTITUTE(A6, "州", "")) - LEN(A6) <> 0, LEN(A6) >= 3)), A6, A6 + "市")

这样就能实现 带区,盟,州 的都不加市,其他的加市,并且例如扬州也不会收到影响

if(A,1,2)A是判断的结果,为true则为1,为false则为2 ,

SUBSTITUTE(A6, "区", "")
用空字符串替换A6里的“区”。

合肥市传到合肥就简单了,利用替换的思路。

REPLACE(A6, "市", "")

这只是用一个例子提出一种思路。人们总是一开始就想到表面的事物,就像怎么加字符,怎么去字符,其实这些在例如finereport里就很难完成预期效果。



你可能感兴趣的:(finereport知识点)