web报表工具FineReport的SQL编辑框的语法简介

感谢大家捧场,这里继续分享关于SQL编辑框的一些语法心得总结,因为数据集定义的面板,也是FineReport报表中最常用的模块之一。

1.我理解的执行过程。

这里其实是生成一个字符串,FineReport将这个字符串通过设置的数据连接传递到报表中执行。在这个过程中报表应该是先把报表规则的东西,替换成大家都认得的字符串后,对应的数据库执行完,会反馈值,有可能返回报错信息,也有可能返回数据集。这个报错信息应该是对应的数据库给的。所以说同样的sql语句,不同的数据库用不同的sql语法来执行有可能是不同的结果。比如select ‘sdf‘在access和sqlserver正常显示,在oracle就抛错。用select version()或者show status或者show
tables能在mysql的数据集定义里正常执行,其他则不行。

sql中的and和or要和公式区别开,有人可能在公式里面把&&用成and。还有公式里面的或||在oracle中是字符串的连接符。

2.sql中调用公式

报表通过公式和参数实现与sql语句的交互。

公式放在框架${}中。于是${"select* from t1"}其实就等价于select *from t1。

数据集中用公式的难点在于拼接起来比较繁琐。

我想很多人接触到的第一个例子应该是帮助文档上参数为空返回全部的sql语句:SELECT *FROM 订单 where 1=1${if(len(area) == 0,"","and 货主地区 = ‘" + area + "‘")} ${if(len(province) ==0,"","and 货主省份 = ‘" + province + "‘")}

下面举个调用FR中format的例子:

select${"‘"+format(p1,"yyyy-MM-dd")+"‘"} from aa

如果漏掉format函数前后的单引号,就会得到错误的结果。其实有的时候可以通过一些方法简化处理的,比如再声明一个变量p2,引用这个变量的定义是format(p1,"yyyy-MM-dd"),这时候上面的sql就变成了select ‘${p2}‘ from aa 【当然如果没有加引号的话那p2就被解析为一个字段名了,这是动态字段的实现方法了】

对于存储过程,数据集定义这地方其实是支持call和exec的调用方法的。

3.sql中调用sql函数

前面说到,sql语句其实是字符串。其实是可以从数据库调用字符串作为一个sql语句进行操作的。这个要用到sql函数了,说例子:

=sql("FRDemo",sql("FRDemo","selecttesttext from test where id=2",1,1),1,1)

test这个表里面的第二条数据的testtext字段就是字符串 select top 1 地区 from 销量

可以把这个字符串用在sql公式中作为sql语句执行

数据集定义那边这么写是可以的 ${sql("FRDemo","select testtext from test where id =2",1,1)}

时间: 2024-08-09 19:49:56

web报表工具FineReport的SQL编辑框的语法简介的相关文章

java报表工具FineReport的SQL编辑框的语法简介

感谢大家捧场,这里继续分享关于SQL编辑框的一些语法心得总结,因为数据集定义的面板,也是FineReport报表中最常用的模块之一. 1.我理解的执行过程. 这里其实是生成一个字符串,FineReport将这个字符串通过设置的数据连接传递到报表中执行.在这个过程中报表应该是先把报表规则的东西,替换成大家都认得的字符串后,对应的数据库执行完,会反馈值,有可能返回报错信息,也有可能返回数据集.这个报错信息应该是对应的数据库给的.所以说同样的sql语句,不同的数据库用不同的sql语法来执行有可能是不同

web报表工具FineReport的公式编辑框的语法简介

FINEREPORT用到公式的地方非常多,单元格(以=开头的便被解析为公式),条件显示,数据字典,报表填报属性值定义,图表标题,轴定义,页眉页脚,甚至单元格的其他属性中的鼠标悬浮提示内容都可以写公式,虽然那个编辑框非常不像. 简单的说下自己感觉的公式要注意的几个地方: 1.if语句语法刚接触感觉比较奇怪,if(条件式子,值1,值2),if可以嵌套,if(条件式子1,值1,if(条件式子2,值2,值3)). 2.switch语句也是,具体函数我不说了. 3.对于判断用单等号和双等号都行. 4.对于

java报表工具FineReport的公式编辑框的语法简介

FINEREPORT用到公式的地方非常多,单元格(以=开头的便被解析为公式),条件显示,数据字典,报表填报属性值定义,图表标题,轴定义,页眉页脚,甚至单元格的其他属性中的鼠标悬浮提示内容都可以写公式,虽然那个编辑框非常不像. 简单的说下自己感觉的公式要注意的几个地方: 1.if语句语法刚接触感觉比较奇怪,if(条件式子,值1,值2),if可以嵌套,if(条件式子1,值1,if(条件式子2,值2,值3)). 2.switch语句也是,具体函数我不说了. 3.对于判断用单等号和双等号都行. 4.对于

web报表工具FineReport的JS编辑框和URL地址栏语法简介

JS编辑框: 1.FineReport的js. 作为一款BS产品,browser端的JavaScript是必不可少的. FineReport中的js是已经调用了finereport.js的. 大家知道,预览报表时,报表servlet会将cpt模板转为html,在这个html的head头部中会引入FineReport的js,这个finereport.js中包含了许多内置的function以及一些公有的属性,不管在模板中还是其他网页中,只要引入了finereport.js,就能够通过FR.xxx的形

web报表工具FineReport最经常用到部分函数详解

之前分别列出来了finereport常用的文本.时间函数的解释,这里应广大朋友的要求,整理了finereport最常用到的一些函数! SUM SUM(number1,number2,-):求一个指定单元格区域中所有数字之和. Number1,number2,-:1到30个参数或指定单元格区域中所有数字. 备注: 函数将直接键入参数中的数值.逻辑值及文本表达式计算在内. 若参数是数组或引用,则只对数组或单元格引用的数值进行计算. 示例: SUM(70,80)等于150. SUM("70"

Web报表工具FineReport中JavaScript的使用

报表软件FineReport采用的是jQuery v1.9.2框架,jQuery是一个快速的,简洁的JavaScript库,能让用户更方便地处理HTML documents.events,实现动画效果,方便地为网站提供AJAX交互,并且它兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+).FineReport报表解析后最终成为一个html页面,因此可以使用JS对报表进行各种处理,可以选择使用jQuery框架的所有方法对报表进行操作.在此基础上,F

web报表工具FineReport常用函数的用法总结(数学和三角函数)

最后一次抛砖引玉了,至此finereport所有的常见函数就分享完了,期待能对大家有些许帮助. ABS ABS(number):返回指定数字的绝对值.绝对值是指没有正负符号的数值. Number:需要求出绝对值的任意实数. 示例: ABS(-1.5)等于1.5. ABS(0)等于0. ABS(2.5)等于2.5. ACOS ACOS(number):返回指定数值的反余弦值.反余弦值为一个角度,返回角度以弧度形式表示. Number:需要返回角度的余弦值. 备注: 函数的参数必须在-1和1之间,包

Web报表工具FineReport的JS API开发(一)

很多报表软件可以利用JS接口来实现更多更复杂的功能.以FineReport为例,开放了大量的JS API给用户,根据执行JS的主体不同可以将分为三大类:FR.FS和contentWindow. 在js语句中执行可以使用FR的方法或者属性,比如说FR.Msg.alert,FR中的方法比如引入finereport.js.FS的方法可以用于数据决策系统中的js接口,比如说FS.tabPane.addItem.而contentWindow是在web页面集成的时候,将F报表嵌入在iframe中,调用报表对

Web报表工具FineReport的JS API开发(二)

上次介绍FineReport的JS API中的第一类开发--FR,这次就来介绍一下FS和contentWindow类的开发. 1 FS FS是数据决策系统中的js接口,比如说FS.tabPane.addItem,先介绍几类操作: 1.1 FS.Trans.signOut() 退出决策平台系统 1.2 FS.tabPane._doCloseTab(FS.tabPane._getSelectedTab()) 关闭当前决策平台的标签 1.3 FS.tabPane.addItem({title:"bai