从上周五开始接触finereport报表工具开始到现在,已经熟悉大部分的操作,现在准备记录下几个简单和常用的操作。
1.序号的添加
无论是组内序号还是普通的序号只需在放置序号的单元格中插入公式seq(),接着再为这个单元格设置左父格即可。
2.页内合计与总计
总计:和excel相同,为sum(D2),表式D2单元格内扩展出来的值的总和。
页内合计:sum({D2}),表示对当前页的D2单元格扩展出来的值求和。需设置左父格。
3.隔行变色
把鼠标放在单元格上,右击,选中条件属性,点击“+”号,属性一栏选中背景选项—>,然后再点击选择背景颜色—>再选择当前行。
条件选择为公式:row()%2==0
4.每页显示固定行数
和隔行变色的原理相同,点击条件属性,点击分页选项,然后条件依旧选择为公式:&A5 % 5 = 0
5.参数为空选择全部
只需要在where语句后面加上:SELECT * FROM 表名称 where 1=1 ${if(len(para) == 0,"","and column in ('" + para+ "')")}
IF语句在sql中还是挺好用的,能够解决很多不是正常传參的情况。但是思考怎么用的时候还是比较费脑筋。
6.添加新值
有些总数据库中查询到的字段为空,如果不进行设置的话,运行的时候表格中有一块j空缺总觉得很突兀,这时我们就可以根据需要来赋予值为空的单元格一个新的值。同样右击条件属性,选择新值选项,并在之后的单元格中填入想要赋予的新值,比如‘0’或者‘无数据’。
然后条件依旧选择公式并输入:len($$$) = 0代表当前单元格值的长度为0
7.添加链接并传递参数
为了更加方便直观的分析数据,经常进行由总到分的查看方式,比如我统计了某个时间段内每天注册了多少个用户,但是我又想知道这一天内注册的用户主要分布在那个地方,这个时候就可以添加超链接,将当前的日期传过去,就可以看到想看的内容了。
实现的步骤为:在想要添加超链接的单元格右击选择超级链接,然后选择你要跳转的报表或者网页,接着选择打开方式(新窗口或者当前窗口),然后再下面的参数名称后面填上对应的值($$$代表当前单元格的值)即可。
8.参数生成控件问题
当进入报表上方的控件区域时,右面的参数面板会自动检测到你的sql语言中包含哪几个参数,并以标签的形式展现出来,只要点击相应的标签就会自动生成对应的表单和控件,所有的参数都在一个表单中。
控件的类型可以在生成之后选择,如果选择错了也没关系,把名称改掉之后,右面的参数面板又会自动生成改动之前的参数。如果想为参数生成的控件添加数据,来源可选择数据集或者单元格,也可以自定义显示值和实际值。
9.几个花费较长时间写的sql
9.1 生成一个参数,可根据参数筛选出某项为空的列表、值不为空的列表和全部列表
纠结了半天,用的if判断传入的参数 0代表为空 1代表不为空 2代表全部,sql语句如下:
SELECT * ,DATE_FORMAT(create_date,'%Y-%m-%d') dd FROM gb_wx_log WHERE
1=1 ${IF(status == 0,"and( ex3 IS NULL or ex3 ='') ","")}
${IF(status==1 ,"and ex3 IS NOT NULL AND ex3!=''","")}
${IF(status==2 ,"","")}
9.2 根据某个字段含有的内容来统计这个内容有多少条记录,并将内容显示出来,sql语句如下:
SELECT COUNT(1) ,
(${IF(len(content)=0,"content","'"+content+"'")}) as name ,
DATE_FORMAT(create_date,'%Y-%m-%d') dd
FROM gb_user_sel_history WHERE content IS NOT NULL
AND 1=1 ${IF(len(content)=0,""," and content like '"+content+"%'")
GROUP BY
${IF(len(content)=0,"content","'"+content+"'")}
ORDER BY COUNT(content) DESC LIMIT 100 ;
这两条sql语句费了老长时间来思考,如果有错误的地方或者有更好的方法欢迎大家来指正。