对报表生成工具的改进
来源:这里教程网
时间:2026-03-02 10:45:20
作者:
公司的报表生成工具的运转过程:
开发报表的过程:
1、通过在前端web界面中进行选择,选项保存到数据库中,这个是。
实际使用:
2、客户选择查询条件后,点击查询,把查询要求提交到tomcat,然后,后台应用程序根据客户提交的这些选项,动态生成sql语句。
3、应用把sql语句发送到数据库,数据库执行sql,返回查询结果。
4、应用按照前端的报表设置时的样式,进行格式化,把格式化后的网页,发送到客户使用的浏览器上,最后浏览器显示这个页面。
一、工具所生成的sql语句,受到预先写好的主题sql的限制,这里所谓主题sql,可以简单理解为就是一段纯sql(除sql中的一些可被实际条件值替换的文本标签外,类似于{:business_date},都是静态的sql),不能是t-sql语句,
可以在一个编辑框中修改、运行这段sql,返回前100行数据作为预览。
主题sql类似于:
SELECT * FROM TB_SALE_DATA
而报表代码类似于这样:
select c.sale_name,
c.sale_id,
c.amount
from TB_SALE_DATA c
inner join TB_CUBE_CUSTOMER TCS --客户维度表
ON C.CUSTOMER_ID = TCS.CUSTOMER_ID
inner join TB_CUBE_ORGANIZATION TCS --销售维度表
ON C.EMPLOYEE_ID = TCS.EMPLOYEE_ID
二、现在的问题是如何才能让的主题sql也可以是t-sql呢?
实际上让主题是t-sql代码是很容易的,没什么难度,关键的问题是,如果把代码改为t-sql之后,报表如何生成sql代码,想了想,就是应用在运行代码的时候,必须要加上select * from #temp这个。
原始的主题代码如下(代码1):
--cube sql
declare @t int=1;
select * into #temp
from TB_SALE_DATA
where sale_type = @t {and sale_name = :name} --这里的{and name = :name}在没有传入实际值时,会被替换为空串
在主题编辑框中运行时,应用必须要生成这样的代码,才能运行:
--cube sql
declare @t int=1;
select * into #temp
from TB_SALE_DATA
where sale_type = @t {and sale_name = :name} --这里的{and name = :name}在没有传入实际值时,会被替换为空串
select * from #temp --增加了这个sql,不然没办法运行
三、系统如何来生成上面多表关联的报表代码呢?
要实现这种扩展,可以在主题中增加一个额外的指定取数的设置选项,也就说一个编辑框里可以填写 t-sql代码,另外一个设置项里输入#temp,这样就指明了可以从#temp里取数,相当于指定了数据源,类似于:
select c.sale_name,
c.sale_id,
c.amount
from #temp c
inner join TB_CUBE_CUSTOMER TCS --客户维度表
ON C.CUSTOMER_ID = TCS.CUSTOMER_ID
inner join TB_CUBE_ORGANIZATION TCS --销售维度表
ON C.EMPLOYEE_ID = TCS.EMPLOYEE_ID
最后,生成的报表的代码就是:
--cube sql start
declare @t int=1;
select * into #temp
from sys.tables
where sale_type = @t and sale_name = 'vc'
--cube sql end
--report sql
select c.sale_name,
c.sale_id,
c.amount
from #temp c
inner join TB_CUBE_CUSTOMER TCS --客户维度表
ON C.CUSTOMER_ID = TCS.CUSTOMER_ID
inner join TB_CUBE_ORGANIZATION TCS --销售维度表
ON C.EMPLOYEE_ID = TCS.EMPLOYEE_ID
编辑推荐:
- sql server 导出数据到excel, excel里面列值自动换行03-02
- 对报表生成工具的改进03-02
- MySQL错误1042-Can't get hostname for your address03-02
- mrt.exe是什么进程03-02
- Sybase ASE 问题统计03-02
- SQLServer 2012添加DBLink03-02
- SQLServer 查看备份进度03-02
- SQLServer 2012 集群安装03-02
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- mrt.exe是什么进程
mrt.exe是什么进程
26-03-02 - msfeedssync.exe是什么进程,能删除吗?
msfeedssync.exe是什么进程,能删除吗?
26-03-02 - sql server 2008安装
sql server 2008安装
26-03-02 - vptray.exe是什么进程
vptray.exe是什么进程
26-03-02 - ppap.exe是什么进程
ppap.exe是什么进程
26-03-02 - 通过拆分字段来优化SQL
通过拆分字段来优化SQL
26-03-02 - 宏基ACER台式机原版win8.1改win7的bios设置修改方法
宏基ACER台式机原版win8.1改win7的bios设置修改方法
26-03-02 - 请将磁盘放入驱动器h是什么意思
请将磁盘放入驱动器h是什么意思
26-03-02 - mdf是什么文件,怎么打开?
mdf是什么文件,怎么打开?
26-03-02 - erp是什么意思?ERP是什么?
erp是什么意思?ERP是什么?
26-03-02
