ezreport数据集高级设计及开发基础

上传人:第*** 文档编号:61572948 上传时间:2018-12-04 格式:PPT 页数:34 大小:1.35MB
返回 下载 相关 举报
ezreport数据集高级设计及开发基础_第1页
第1页 / 共34页
ezreport数据集高级设计及开发基础_第2页
第2页 / 共34页
ezreport数据集高级设计及开发基础_第3页
第3页 / 共34页
ezreport数据集高级设计及开发基础_第4页
第4页 / 共34页
ezreport数据集高级设计及开发基础_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《ezreport数据集高级设计及开发基础》由会员分享,可在线阅读,更多相关《ezreport数据集高级设计及开发基础(34页珍藏版)》请在金锄头文库上搜索。

1、北京久其软件股份有限公司,2018年12月4日星期二,久其通用数据管理平台,数据集高级设计与开发基础,ezReport培训课程,2018年12月4日星期二,概述,概念回顾 数据集应用技术 数据集的类型 数据的过滤 宏 参数 存储过程 数据集开发基础 数据的权限 数据开发接口 总结,2018年12月4日星期二,概念回顾,数据源 数据集,SQL Server,Oracle,其它数据库,数据源1,数据源2,.,数据集1,数据集2,数据集3,数据集n,报表,概念回顾,数据集的属性 名称:数据集的标识,表内唯一 类型:数据集的类型 定义:数据集提取或存储数据的定义,不同的数据集有不同的定义 关联数据源:

2、数据集的来源数据源,某些数据集的数据源是可选的(比如内建数据集) 关联Java类:数据集关联的进行预处理的Java类,通常由二次开发提供 别名:数据集的别名,通常供二次开发使用,2018年12月4日星期二,2018年12月4日星期二,数据集应用技术,概念回顾 数据集应用技术 数据集的类型 数据的过滤 宏 参数 存储过程 数据集开发基础 数据的权限 数据开发接口 总结,数据集应用技术数据集的类型,内建数据集 实现方式:将数据存储于报表模版中 应用环境:演示,少量字典数据存储,扩展开发 技术特点:简单灵活,功能较弱 SQL数据集 实现方式:通过SQL语句查询数据库 应用环境:大部分的业务处理都需要

3、用这种数据集 技术特点:功能强大,但需要一定的数据库基础 存储过程 实现方式:调用数据库的存储过程提取数据 应用环境:逻辑复杂或效率要求较高的业务 技术特点:难以使用,移植性差,高效,灵活性好,2018年12月4日星期二,数据集应用技术数据集的过滤,示例报表:产品销售情况查询( T03-RPT001.rpt ) 从全国的产品销售信息表中查询查询各产品的销售情况,能够按照地区和类别进行过滤,2018年12月4日星期二,数据集应用技术数据集的过滤,查询报表制作 制作一个SQL数据集提取数据 制作一个浮动区域显示数据 添加地区和分类查询参数 在浮动区域的控制单元格上设置过滤条件: (IsNull(P

4、_PROV) or (P_PROV = DS1S_PROV) and (IsNull(P_CLASS) or (P_CLASS = DS1S_CLASS) 存在问题 内存问题 速度问题 如何改进? 利用数据库优化 减少引擎分析的数据量,2018年12月4日星期二,数据集应用技术数据集的过滤,宏 在数据集的SQL语句或表样文本中嵌入的表达式,这些表达式在引擎的预处理过程中会被替换为相应的文本 在宏中只能引用报表的参数 宏的格式 直接引用参数:P_PROV,P_QUERY_VALUE 嵌入表达式:=P_PROV,=P_VALUE/100 =if IsNull(P_PROV) then P_QUER

5、Y_VALUE + 100 else P_QUERY_VALUE 注意问题: 仅仅是文本内容的替换,在SQL中注意类型控制 在宏替换失败时保留原始文本,2018年12月4日星期二,数据集应用技术数据集的过滤,宏示例 参数:P_INT(整形),P_STR(字符串) SQL语句: select * from t1 where t1.f0P_INT =if IsNull(P_STR) then “” else “and t1.f1 like %” + P_STR + “%” 情况一:P_INT=100,P_STR=“” select * from t1 where t1.f0100 情况二:P_IN

6、T=100,P_STR=“Hello” select * from t1 whre t1.f0100 and t1.f1 like %Hello%,2018年12月4日星期二,数据集应用技术数据集的过滤,报表调整:数据集过滤优化(T03-RPT002.rpt) 去掉浮动区域控制单元格的过滤条件 修改数据集的SQL语句: SELECT SALES.S_DATE, FROM SALES WHERE (1=1) =if IsNull(P_PROV) then “ else “and SALES.S_PROV=“+P_PROV+“ =if IsNull(P_CLASS) then “ else “an

7、d SALES.S_CLASS=“+P_CLASS+“,2018年12月4日星期二,数据集应用技术数据集的过滤,宏存在的一些问题 类型处理问题 字符串增加引号、日期类型需要处理等 安全性问题 如:select * from t where name=p_name 当p_name=“ or 1=1 -” =select * from t where name= or 1=1 - 兼容性问题 不同的数据库某些类型处理方法不同 比如日期: SQL Server: f_date 2007-1-1 Oracle:f_date to_date(2007-1-1, yyyy-MM-dd),2018年12月4

8、日星期二,数据集应用技术数据集的过滤,查询参数 在SQL语句中直接嵌入参数进行查询,这些在执行SQL语句的时候被设置进去 不需要处理类型问题,而且安全性好 参数格式 ?,例如?P_NAME,?P_VALUE 查询示例 参数:P_INT(整形);P_STR(字符串);P_DATE(日期类型) select * from t where t.f1 ?P_INT and t.f2 = ?P_STR and t.f3 ?P_DATE,2018年12月4日星期二,数据集应用技术数据集的过滤,参数示例 参数:P_INT(整形),P_STR(字符串) SQL语句: select * from t1 wher

9、e t1.f0?P_INT and t1.f1=?P_STR 与宏结合使用 select * from t1 where t1.f0?P_INT =if IsNull(P_STR) then “” else “and t1.f1=?P_STR” P_STR=“” =select * from t1 where t1.f0?P_INT P_STR=“Hello” =select * from t1 where t1.f0?P_INT and t1.f1=?P_STR,2018年12月4日星期二,数据集应用技术数据集的过滤,用查询参数优化数据集(T03-RPT003.rpt) 查询SQL: SEL

10、ECT SALES.S_DATE, FROM SALES WHERE 1=1 =if IsNull(P_PROV) then “ else “and SALES.S_PROV = ?P_PROV“ =if IsNull(P_CLASS) then “ else “and SALES.S_CLASS = ?P_CLASS“,2018年12月4日星期二,数据集应用技术存储过程,数据集的一种类型 不同的数据库处理的方式不同 需要编写存储过程的调用语句 进行单元格映射的时候无法查看字段列表 存储过程必须返回数据集(游标类型) 示例:销售情况表的查询 参数:渠道和类别 制作报表显示销售总额 报表参数:

11、P_CHAN:渠道类型 P_CLASS:产品类别,2018年12月4日星期二,数据集应用技术存储过程,SQL Server的存储过程,2018年12月4日星期二,create proc f_sales_groupquery p_channel varchar(50), p_class varchar(50) as begin select S_DATE,S_PROV, SUM(S_PROFIT) S_PROFIT, SUM(S_SUM) S_SUM from sales where S_CHAN=p_channel and S_CLASS = p_class group by S_DATE,

12、S_PROV end,数据集应用技术存储过程,SQL Server存储过程调用 标准方式(T03-RPT004.rpt): 用call调用存储过程 格式:call () 可以使用参数,也可以使用宏 call f_sales_groupquery(?P_CHAN, ?P_CLASS) call f_sales_groupquery(?P_CHAN, P_CLASS) 特殊方式(T03-RPT005.rpt): SQL Server提供的exec语句模式 格式:exec 可以使用参数,也可以使用宏 exec f_sales_groupquery ?P_CHAN, ?P_CLASS exec f_s

13、ales_groupquery ?P_CHAN, P_CLASS,2018年12月4日星期二,数据集应用技术存储过程,Oracle的存储过程 create or replace package pkg_test is type refcursor is ref cursor; function f_sales_group_query(p_channel varchar, p_class varchar) return refcursor; procedure p_sales_group_query(p_channel varchar, p_class varchar, p_result out

14、 refcursor); end pkg_test; Oracle中有包的概念,调用时必须指定包名称 存储过程声明在包中 返回游标时需要定义特殊的ref cursor类型 区分function和procedure类型,2018年12月4日星期二,数据集应用技术存储过程,Oracle存储过程调用 标准方式(T03-RPT006.rpt;T03-RPT007.rpt): 用call调用存储过程,与SQL Server类型 必须用参数方式传入所有参数,返回用“?”表示 无法使用宏替换或直接写参数常量 ?=call pkg_test.f_sales_group_query(?P_CHAN, ?P_CL

15、ASS) call pkg_test.p_sales_group_query(?P_CHAN, ?P_CLASS, ?) 特殊方式(T03-RPT008.rpt): Oracle提供select from dual的查询方式 只能够处理一些简单的存储过程(比如存储过程使用临时表时无法支持) 必须是返回游标类型的函数 可以使用宏和参数 select pkg_test.f_sales_group_query(?P_CHAN, ?P_CLASS) from dual select pkg_test.f_sales_group_query(?P_CHAN, P_CLASS) from dual,201

16、8年12月4日星期二,2018年12月4日星期二,数据集开发基础,概念回顾 数据集应用技术 数据集的类型 数据的过滤 宏 参数 存储过程 数据集开发基础 数据的权限 数据开发接口 总结,数据集开发基础数据的权限,报表权限的三个级别 报表级别的权限 用户对每张报表的访问权限 在报表引擎之外进行开发即可完成控制 记录级别的权限 用户对数据记录级别的权限 通过引擎的权限控制接口可以进行控制 字段级别的权限 在记录级别的基础之上,针对字段的权限控制 控制方式复杂,目前引擎还没有支持,2018年12月4日星期二,数据集开发基础数据的权限,数据权限控制接口 public interface DataFilter /* * 根据物理表名获取对应的过滤条件

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号