fineReport学习记录

一.学习层次坐标课程中(https://help.finereport.com/beginnerguide-view-16),查询表内容数据库语句如下:

select STRFTIME('%m',订购日期) as 月份,应付金额
from 订单
where STRFTIME('%Y',订购日期)='2011'

表示从‘订单’表中查询‘订购日期’的年份为2011年的月份以及应付金额。

注意:订购日期 原始格式为 2010-01-01 00:00:00 这样表示,%m表示从订购日期内容中提取出月份,%Y表示提取出年份。 注意大小写,必须年份是大写,月份是小写。

.层次坐标常用公式

cell表示列号,x表示行号

cellx[!0]:获取单元格cellx扩展出来的所有值

cellx[!0]{条件表达式}:A1[!0]{A1!=3} 取出A1单元格中扩展出来的所有值中不等于3的数

&cellx:&A1 得到A1单元格扩展出来后每个值对应的位置

$cellx: $A1 获取A1单元格的值

cellx[celly:-z]:获取扩展单元格celly当前位置有一定偏移的位置上的值,-z表示相对后移,+z表示相对前移

如:A1对应为range(5),B1=A1[A1:-1] 表示A1对应列为1 2 3 4 5,B1为对A1列后移一位,即空 1 2 3 4

cellx[celly:z]:取单元格celly扩展后某一位置上,cellx对应的值。 z表示正数第z个数,!-z表示倒数第z个数

下面为跟着视频做的案例1:

           A                                B                             C                        D                                    E

1       月份                        应付金额                   比较                    占比                              环比
2   ds1.G(月份)    ds1.求和(应付金额)    =B2-B2[A2:1]    =B2/sum(B2[!0])    =IF(&A2>1,B2/B2[A2:-1],0)

比较:B列中:第n行数字比n-1行数字相差多少

占比:B列中:第N行数字占该列数字总和比例

环比:B列中:每行数字占上一行数字的比例,默认第一行数字占第一行数字比例为0

注意:中括号 里面为什么是A2而不是B2?取的是B2列中的值,但为什么是相对A2列中的位置取值??

          我觉得是因为B2单元格是依据A1单元格为左父格所得到的,并且该单元格是求和得到,所以后面的公式依据依然是A1.

案例2:

               A                    B                         C                             D                                                  E

1          年份                月份                应付金额                   逐层累计                                       跨层累计
2   ds1.G(年份)    ds1.G(月份)    ds1.求和(应付金额)    =C2+D2[B2:-1]    =IF(&B2>1,C2+E2[B2:-1],C2+E2[A2:-1,B2:!-1])
3                应付金额大于2500的月份个数                           =COUNT(C2[!0]{A2=$A2 && C2>2500})

注意:不明白上面的公式含义,特别是跨层累计和统计个数的公式写法。

二。主子报表

下面是两个子报表:

订单统计表
订单编号:    ds1.G(订单ID)
订单日期:    ds1.G(订购日期)    发货日期:    ds1.G(发货日期)
客户编号:    ds1.G(客户ID)    客户名称:    ds1.G(货主名称)
地址:    ds1.G(货主地址)
到货日期:    ds1.G(到货日期)    应付金额:    ds1.G(应付金额)

订单明细
产品    单价    数量    折扣    销售额
ds2.S(产品ID)    ds2.G(单价)    ds2.G(数量)    ds2.G(折扣)    =B12*C12*(1-D12)

最终显示为:

 注意:设置 订单统计表 的所有元素的左父格均为ds1.G(订单ID),ds2.S(产品ID) 的左父格也是ds1.G(订单ID)

          每页显示一份子报表,选中 ds2.S(产品ID)-单元格属性中选择‘其他’-行后分页   则表示在该行以后分页显示

          订单明细表与订单统计表相关,所以设置ds2.S(产品ID)-双击-过滤-订单ID等于订单编号   一定要点击‘添加’才能生效

三。条件属性

右边列工具栏中有 条件属性-添加条件-编辑内容

注意:获取行公式:ROW()%2==0 表示偶数行  (ROW()%2=0可以达到同样效果)

          作用在‘当前行或列’上表示作用在单元格上,作用在‘当前格’表示单元格中的文字

猜你喜欢

转载自www.cnblogs.com/kjkj/p/12678028.html