巧用锐浪报表:用报表脚本实现动态显示小数位数

 

需求概述

在某些统计报表中,某类数字其值取值范围相当大,为了让超大的数据总的显示位数不要太多,而较小的数据又要显示有足够的精度,即根据数据的大小,显示不同的小数位数,这有点类似计算机中表示带小数数据的浮点数机制。

在锐浪报表中可以通过设置数据的“格式”属性来实现数字按规定格式显示出来,但上面的要求并不能直接通过设置格式来实现,而是要借助报表脚本功能来实现。

实现说明

首先设置数据的格式为输出需要的最多小数位数,如格式为“#,##0.000000”,表示数据始终显示5位小数。然后利用报表脚本根据数据值的大小确定要输出的小数位,将后面多余的小数位截掉,这样就得到需要的显式文字。

在字段或统计框的“获取显示文字脚本”属性上写报表脚本可以设置其显示文字,举例脚本代码:

//根据值确定要显示的位数
var v = Sender.Value;
var digit = 0;
if (v>2000)
  digit = 0;
else if (v>1500)
  digit = 2;
else if (v>800)
  digit = 3;
else
  digit = 5;

var Text = Sender.DisplayText;  //得到根据格式化串生成的苏剧显示文本,如:123.45600 
var Index = Text.indexOf(".");  //确定小数点位置
if (digit > 0)
  Index = Index + digit + 1;
else
  Index = Index;
Sender.DisplayText = Text.substr(0, Index);  //截取显示文字,并设置为数据的显示文本

示例下载(http://www.rubylong.cn/download/samples/FloatDecimal.grf)

posted on 2010-08-02 09:24  报表工具研究  阅读(1601)  评论(0编辑  收藏  举报

导航