反馈已提交

网络繁忙

计算入门指南

  • 文档创建者:Roxy
  • 编辑次数:7次
  • 最近更新:Roxy 于 2021-09-13
  • 1. 概述

    本文介绍如何在 FineReport 中使用计算功能。

    将告诉用户何时可使用计算、如何使用公式编辑器。

    如果刚接触 FineReport 的用户,不了解函数,则非常适合从这里着手。

    2. 为什么使用计算

    通过计算,可以根据数据源中已存在的数据创建新数据,并对数据执行计算。

    这样可以执行复杂的分析,并且可以引用计算结果进行可视化模板制作。

    3. 何时使用计算

    计算允许利用数据源中已存在的数据创建新数据。

    有很多原因,可以使用函数进行计算。可能包括:

    下面给出使用计算的情景。

    3.1 数据源中缺少分析所需的数据

    内置 FRDemo 数据表「S订单明细」中有「单价」、「数量」、「进价」、「折扣」字段,但需要计算每个订单ID的「利润」以及所有订单 ID 的「平均利润」,则可以使用类似于以下内容的公式计算,如下图所示:

    利润:C2 * (B2 - D2) * (1 - E2)

    平均利润:average(F2)

    1630468111241917.gif

    结果如下图所示:


    3.2 想要在组件中转换数值

    例如可能要将字符串「2021/02/07星期三」转换为时间型,输入公式:TODATE("2021/02/07星期三","yyyy/MM/ddEEE","zh")如下图所示:

    1630475665107612.png


    3.3 想要设置图表样式颜色

    例如设置表格隔行变色。

    详情参见:隐藏行后隔行变色

    4. 函数计算支持的使用位置

    4.1 在公式编辑框中使用函数

    FineReport 中可以使用「公式编辑器」的位置有如下几个:

    使用位置图示
    条件属性 

    示例:隔行/列设置背景色

    数据字典

    示例:数据字典 2.4 节

    筛选过滤

    填报设置提交条件


    图表标题
    图表轴定义


    定义图表单元格数据源
    报表页眉与页脚
    单元格内容提示

    4.2 在 SQL 编辑框中使用函数

    4.2.1 SQL 中使用普通函数

    在 SQL 中使用公式,可以将公式放在 ${} 中,例如参数为空返回全部的 sql 语句:

    SELECT * FROM 订单 where 1=1 ${if(len(area) == 0,"","and 货主地区 = '" + area + "'")} ${if(len(province) == 0,"","and 货主省份 = '" + province + "'")}

    参数/公式说明
    area 和 province自定义的参数
    if(len(area) == 0,"","and 货主地区 = '" + area + "'")

    如果len(area)!=0,即 area 参数不为空,比如说 area 的值为华东,那么 IF 语句的执行结果为and 货主地区='华东',然后再把这句话拼接到 SQL 语句当中,SQL 语句就变成:

    SELECT * FROM 订单 where 1=1 and 货主地区='华东' and 货主省份='江苏'

    4.2.2 SQL 中使用 SQL 函数

    SQL 语句其实是字符串。因此可以从数据库调用一个 SQL 语句作为字符串进行取数。此时即用到 SQL函数,例如公式:

    =sql("FRDemo","SELECT * FROM 销量 ",1,1) 输出结果为华东

    同时也可以把这个字符串用在 SQL 公式中作为字符串执行,因此创建数据集时可以定义为:SELECT * FROM  where 地区='${sql("FRDemo","SELECT * FROM 销量 ",1,1)}'

    也就是 SELECT * FROM  where 地区='华东'

    4.3 在 JS 编辑框中使用函数

    作为一款 B/S 产品,browser 端的 JavaScript 是必不可少的。

    如何在 JS 编辑框中使用公式详情参见:在JS中使用FR公式


    附件列表


    主题: 报表专题
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    在线QQ:800049425

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526

    文 档反 馈

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭