感谢大家捧场,这里继续分享关于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)}

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

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

    FINEREPORT用到公式的地方非常多,单元格(以=开头的便被解析为公式),条件显示,数据字典,报表填报属性值定义,图表标题,轴定义,页眉页脚,甚至单元格的其他属性中的鼠标悬浮提示内容都可以写公式, ...

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

    JS编辑框: 1.FineReport的js. 作为一款BS产品,browser端的JavaScript是必不可少的. FineReport中的js是已经调用了finereport.js的. 大家知道 ...

  3. FineReport的公式编辑框的语法简介

    FINEREPORT用到公式的地方非常多,单元格(以=开头的便被解析为公式),条件显示,数据字典,报表填报属性值定义,图表标题,轴定义,页眉页脚,甚至单元格的其他属性中的鼠标悬浮提示内容都可以写公式. ...

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

    之前分别列出来了finereport常用的文本.时间函数的解释,这里应广大朋友的要求,整理了finereport最常用到的一些函数! SUM SUM(number1,number2,-):求一个指定单 ...

  5. web报表工具FineReport常用函数的用法总结(日期和时间函数)

    web报表工具FineReport常用函数的用法总结(日期和时间函数) 说明:凡函数中以日期作为参数因子的,其中日期的形式都必须是yy/mm/dd.而且必须用英文环境下双引号(" " ...

  6. 企业级 WEB 报表工具——FineReport

    官网地址:http://www.finereport.com/ 帮助文档地址:https://help.finereport.com/  简介: FineReport 是帆软自主研发的企业级 web ...

  7. Web报表工具FineReport中JavaScript的使用

    报表软件FineReport采用的是jQuery v1.9.2框架,jQuery是一个快速的,简洁的JavaScript库,能让用户更方便地处理HTML documents.events,实现动画效果 ...

  8. Web报表工具FineReport填报界面键盘操作

    2019独角兽企业重金招聘Python工程师标准>>> 对于一张填报数据较多的报表,需要用户频繁地操作鼠标.而FineReport填报界面除去按钮类型的控件,其余可以完全使用键盘而不 ...

  9. web报表工具FineReport使用中遇到的常见报错及解决办法(三)

    这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己. 出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有.有报错要看日志.下面简单罗列下常见的问题,大多 ...

最新文章

  1. 比特大陆全球首发SOPHON系列张量处理器和解决方案
  2. java nio使用_什么时候使用NIO?
  3. 网络推广专员浅析如何提升企业网站在网络推广期间的用户体验?
  4. 不要去追一匹马,用追马的时间种草
  5. 【SpringBoot】编写一个自己的Starter
  6. 116. 飞行员兄弟【二进制枚举】
  7. mset redis_redis mset string 命令简介
  8. C++算法工程师需要具备开发能力
  9. vue组件之间的参数传递
  10. Maven的安装与配置(详细版)
  11. basename函数漏洞之[Zer0pts2020]Can you guess it?
  12. Java二维码编码识别
  13. 疫情下的春招实习历程
  14. 基于AutoJs抖音极速版辅助App
  15. opencv学习日记——CV_8UC1 含义
  16. 1.豆豆项目搭建之springboot集成mybatis-plus(包含mybatis-plus自动生成基础代码)
  17. 微前端框架qiankun开发到部署保姆式教程原理与实战
  18. 三十九、Fluent时间步长的估算与库朗数
  19. plsql dev 12 版下载地址
  20. 【oracle存储过程】-编写及调用常见问题

热门文章

  1. sql:命名管道管道程序_学习SQL:命名约定
  2. Vue学习笔记(六) 表单输入绑定
  3. Oracle :备份 、还原数据库
  4. 端口渗透·网站渗透过程 --21 ,22,873,3306,6379,8080(8080端口是针对CMS的渗透)...
  5. poi excel 导入导出
  6. 【Source Insight 】之marco学习笔记2
  7. Linux下OneinStack一键安装JAVA+PHP+Tomcat+Nginx+MySQL网站环境
  8. datetimepicker一个不错的日历android特效
  9. 根据输入汉字获取其全拼及简拼
  10. qq2013 sp1 去广告方法及代码