最近在用帆软设计器做可视化图表。偶有遇到因为数据集的字段类型导致加载不出折线,现记录如下。做报表的同行可以参考。

数据库使用了 Oracle 11g。数据集的 SQL 代码片是之前用在另一个单元格报表里面的。页面上有一个率是直接计算得出,我为了方便、就直接用 SQL 计算并另外放在一个单独的字段里。代码如下所示:

select dd.设备编码, 
  dd.设备名称, 
  dd.理论时长, 
  dd.年度, 
  dd.月度, 
  dd.日期, 
  dd.停机时长, 
  round((1-(dd.停机时长 / dd.理论时长)),6) *100 || '%' 利用率 
from dd

看起来很正常,对不?然后用这段代码作为数据集,预览的时候也正常显示了。继续用折线图,按惯例配置 “分类” 属性、也就是图的横轴为 “日期” 字段;配置 “系列” 属性、也就是图的折线为 “利用率” 字段 ; 使用“字段值”、在 “汇总方式” 属性中使用了 “求和”。配置如下图所示:

帆软设计器报表加载不出折线图的原因-LMLPHP

 加载之后的效果,发现折现没有正常渲染。图表只有 x、y轴,其余是空白的。

帆软设计器报表加载不出折线图的原因-LMLPHP

 琢磨了帆软官网教程、还有一些其他人的操作方法,似乎都没什么不同。于是找了同事一起交流。试了其他字段的展示之后、发现问题不在配置上,而是数据集返回的字段类型不对。正确的数据集 SQL 片段如下:

select dd.设备编码, 
  dd.设备名称, 
  dd.理论时长, 
  dd.年度, 
  dd.月度, 
  dd.日期, 
  dd.停机时长, 
  round((1-(dd.停机时长 / dd.理论时长)),6) *100 利用率   
/* 此处去掉 '%', 返回值是数字类型 */
from dd

重新加载报表、折线图就正常渲染了。如下图所示:

帆软设计器报表加载不出折线图的原因-LMLPHP

 目前还没搞明白为啥这种每个时间点只有一个值、而且要显示为折线的东西要选一个 “求和” 的属性。。不过至少了解、帆软的图表在 “系列” 属性的操作需要对应具体的返回类型。也就是适用于单元格(文字)报表的 SQL 数据集,不一定适用折线图等可视化报表。

花了一下午,研究出来。觉得自己有点傻缺 :)

(完)

08-08 17:21