代码之家  ›  专栏  ›  技术社区  ›  strike_noir

以字为计算列的birt数

  •  2
  • strike_noir  · 技术社区  · 16 年前

    我想问一下如何在birt中添加一个计算列来计算一个数字到它的单词表示中? (如100至“100”)。 所以在我的数据集中,我可以有一个包含字符串的列

    我是伯特新来的 希望有一两个指针给我

    2 回复  |  直到 16 年前
        1
  •  2
  •   Ed .    16 年前

    我知道这是一篇很老的文章,但是如果你仍然感兴趣,我会这样做:

    添加一个脚本或JAR,其中包含一个将数字转换为文本表示形式的函数/方法。例如,要执行此操作,请创建一个server-side-utilities.js文件,然后在“资源浏览器”选项卡中添加资源。然后,在报表本身的“属性编辑器”中,单击“资源”选项卡并添加该JS文件。

    然后编辑JS文件以包含一个将数字转换为文本并保存它的函数。然后在“数据集”对话框中添加一个计算列,命名它,将数据类型设置为字符串,并将表达式设置为调用定义的函数,将相关列的值传递给函数,例如。 convertNumberToText(row["NUMERIC_COL"]) .

    部分实现 convertNumberToText() 可能是:

    function convertNumberToText(number)
    {
      var text;
    
      switch (number)
      {
        case 1:
        {
          text = "One";
          break;
        }
        default: text = "Unsupported number";
      }
    
      return text;
    }
    
        2
  •  0
  •   paxdiablo    16 年前

    实际上,即使这个问题有一个公认的答案,我还是会提供另一个解决方案。

    在数据库中沿着以下行创建转换表:

    number  as_one       as_first
    ------  -----------  ------------
         1  one          first
         2  two          second
        99  ninety-nine  ninety-ninth
    

    只需使用查询(或子查询或隐式/显式联接)来检索您感兴趣的数字的文本值。

    这大大简化了在客户机上输出的代码,而代价是存储量最少,并且设置了一点表。

    推荐文章