集智数据平台的报表系统提供的自动计算功能大大保证了用户输入数据的快速性和准确性。但随着需求的不断变化,有时我们可能要想一些其他的办法来满足五花八门的需求。如,希望在报表的一列中取某字段的值,当数据库中对应的记录没有值时则显示自动计算后的值。
从集智数据平台的报表系统提供的自动计算功能,结合上述问题本身,其实不难解决。无非使用判断,若数据库有值则取该值,否则显示自动计算的值。看一下报表:
在C2单元格的自动计算中这样写:${C2}==''?${A2+B2}:${C2}
报表发布后我们发现报脚本错误,原因是自动计算中无法直接引用自身单元格,并且无法使用类似单元格中的value()函数。我们很快会想到复制一个C2到其他单元格,然后在C2中引用那个单元格就可以了,当然这是一种办法,但是对于数据量大的报表来说,增加单元格会影响效率。所以必须想办法在C2的自动计算中引用C2的值。
由于报表系统中的自动计算中支持js函数,我们可以想办法得到C2的单元格ID,通过document对象获取其值。报表做一下修改,增加行号:
D2的自动计算表达式:document.getElementById("report1_D"+${A2}).innerText==''?${B2+C2}:document.getElementById("report1_D"+${A2}).innerText
我们看一下页面的结果:
更多了解各种复杂问题的处理,可以参考:强大的报表计算功能,灵活处理各种复杂格式和计算,企业收集数据、查询、报表、分析的一体化平台。