Birt报表从session如何取值中取值取不到,求解

使用说明书
北京神州数码思特奇信息技术股份有限公司
二〇一〇年四月
1 BIRT介绍... 4
2 应用集成... 5
2.1 添加Jar包、配置web.xml. 5
2.2 报表查询界面集成... 15
2.2.1 集成EXCEL报表工具... 16
2.3 对BIRT显示界面的一些修改... 17
2.4 备忘事项... 20
3 报表配置... 22
3.1报表模板的创建... 28
3.2使用公用的数据源... 35
3.3参数的配置... 39
3.3.1 配置?形式的参数... 39
3.3.2 配置脚本形式的参数... 43
3.1 隔行高亮显示... 44
3.2 引用定义好的CSS样式... 46
3.3 图表配置... 49
3.4 字段收敛(根据用户group_id隐藏字段) 55
3.4.1 数据集beforeOpen脚本中增加... 56
3.4.2 修改报表Sqlquery. 56
3.4.3 修改报表模板... 58
4 尚未解决问题列表... 59
4.1 表头固定... 59
4.2 Word导出乱码... 59
1 BIRT介绍
BIRT (Business Intelligence and Reporting Tools), 是为 Web 应用程序开发的基于
Eclipse 的开源报表系统,特别之处在于它是以 Java 和 J2EE 为基础。BIRT 有两个主要组件:基于 Eclipse 的报表设计器,以及部署到应用服务器上的运行时组件。BIRT 也提供了图表引擎让你能为应用增加图表。
扩展阅读:
目前最新版本为2.5,但新的版本可能存在问题,也没有前人的经验借鉴,所以我们使用的版本是2.3.2。
使用前请先下载birt-rcp-report-designer-2_3_2(eclipse报表设计器)、birt-runtime-2_3_2_2(BIRT报表运行环境)
2 应用集成
BRIT运行环境要求
Java 1.5 JDK/JRE以上
Weblogic9以上
2.1 添加Jar包、配置web.xml
环境为weblogic10,jdk1.6
应用为渠道佣金系统WEB应用
birt-runtime-2_3_2中WebViewerExample
copy WebViewerExample\WEB-INF\platform 到当前工程WEB-INF下
copy birt.tld 到当前工程WEB-INF\tld下
copy WebViewerExample\WEB-INF\lib 到当前工程WEB-INF\lib下
copy WebViewerExample\WEB-INF\server-config.wsdd 到当前工程WEB-INF下
copy WebViewerExample\WEB-INF\viewer.properties 到当前工程WEB-INF下
copy js.jar 到weblogic/wlserver_10.3/server/lib/下
编辑chn_domain/bin/setDomainEnv.sh
修改CLASSPATH,增加${WL_HOME}/server/lib/js.jar
CLASSPATH="${WL_HOME}/server/lib/js.jar${PRE_CLASSPATH}${CLASSPATHSEP}${WEBLOGIC_CLASSPATH}${CLASSPATHSEP}${POST_CLASSPATH}${CLASSPA
THSEP}${WLP_POST_CLASSPATH}"
copy WebViewerExample\webcontent\birt 到当前工程webRoot规下
copy WebViewerExample\report、logs、documents、scriptlib 到刚copy过来的webRoot\birt下
编辑web.xml
&&&&&&& &!-- BIRT配置 --&
&&&&&&& &!--
Default locale setting --&
&&&&&&& &!--
context-param&
&&&&&&&&&&&&&&& &param-name&BIRT_VIEWER_LOCALE&/param-name&
&&&&&&&&&&&&&&& &param-value&en-US&/param-value&
&&&&&&& &/context-param--&
&&&&&&& &!--
&&&&&&&&&&&&&&& Default
timezone setting.
&&&&&&&&&&&&&&& Examples:
"Europe/Paris", "GMT+1".
&&&&&&&&&&&&&&& Defaults
to the container's timezone.&&&&&&&&&
&&&&&&& &--&
&&&&&&& &!--& context-param&
&&&&&&&&&&&&&&& &param-name&BIRT_VIEWER_TIMEZONE&/param-name&
&&&&&&&&&&&&&&& &param-value&&/param-value&
&&&&&&& &/context-param--&
&&&&&&& &!-- Report
resources directory for preview. Default to ${birt home} --&
&&&&&&& &!--存放报表模板路径--&
&&&&&&& &context-param&
&&&&&&&&&&&&&&& &param-name&BIRT_VIEWER_WORKING_FOLDER&/param-name&
&&&&&&&&&&&&&&& &param-value&birt/model&/param-value&
&&&&&&& &/context-param&
&&&&&&& &!-- The
generated document files directory. Default to ${birt home}/documents --&
&&&&&&& &context-param&
&&&&&&&&&&&&&&& &param-name&BIRT_VIEWER_DOCUMENT_FOLDER&/param-name&
&&&&&&&&&&&&&&& &param-value&birt/documents&/param-value&
&&&&&&& &/context-param&
&&&&&&& &!-- If
only access the reprot resources under working folder. Default is true --&
&&&&&&& &context-param&
&&&&&&&&&&&&&&& &param-name&WORKING_FOLDER_ACCESS_ONLY&/param-name&
&&&&&&&&&&&&&&& &param-value&true&/param-value&
&&&&&&& &/context-param&
&&&&&&& &!-- Output
image/chart directory. Default to ${birt home}/report/images --&
&&&&&&& &context-param&
&&&&&&&&&&&&&&& &param-name&BIRT_VIEWER_IMAGE_DIR&/param-name&
&&&&&&&&&&&&&&& &param-value&birt/report/images&/param-value&
&&&&&&& &/context-param&
&&&&&&& &!-- Engine
log directory. Default to ${birt home}/logs --&
&&&&&&& &context-param&
&&&&&&&&&&&&&&& &param-name&BIRT_VIEWER_LOG_DIR&/param-name&
&&&&&&&&&&&&&&& &param-value&birt/logs&/param-value&
&&&&&&& &/context-param&
&&&&&&& &!-- Report
engine log level --&
&&&&&&& &context-param&
&&&&&&&&&&&&&&& &param-name&BIRT_VIEWER_LOG_LEVEL&/param-name&
&&&&&&&&&&&&&&& &param-value&WARNING&/param-value&
&&&&&&& &/context-param&
&&&&&&& &!--
Directory to store all birt report script libraries (JARs). Default to ${birt
home}/scriptlib --&
&&&&&&& &context-param&
&&&&&&&&&&&&&&& &param-name&BIRT_VIEWER_SCRIPTLIB_DIR&/param-name&
&&&&&&&&&&&&&&& &param-value&birt/scriptlib&/param-value&
&&&&&&& &/context-param&
&&&&&&& &!--
Resource location directory. Default to ${birt home} --&
&&&&&&& &context-param&
&&&&&&&&&&&&&&& &param-name&BIRT_RESOURCE_PATH&/param-name&
&&&&&&&&&&&&&&& &param-value&birt&/param-value&
&&&&&&& &/context-param&
&&&&&&& &!--
Preview report max rows limited. --&
&&&&&&& &context-param&
&&&&&&&&&&&&&&& &param-name&BIRT_VIEWER_MAX_ROWS&/param-name&
&&&&&&&&&&&&&&& &param-value&&/param-value&
&&&&&&& &/context-param&
&&&&&&& &!--
Preview report max cube fetch levels limited.(Only support to preview a report
design file using preview pattern.) --&
&&&&&&& &context-param&
&&&&&&&&&&&&&&& &param-name&BIRT_VIEWER_MAX_CUBE_ROWLEVELS&/param-name&
&&&&&&&&&&&&&&& &param-value&&/param-value&
&&&&&&& &/context-param&
&&&&&&& &context-param&
&&&&&&&&&&&&&&& &param-name&BIRT_VIEWER_MAX_CUBE_COLUMNLEVELS&/param-name&
&&&&&&&&&&&&&&& &param-value&&/param-value&
&&&&&&& &/context-param&
&&&&&&& &!-- Memory
size(MB) for creating cube. --&
&&&&&&& &context-param&
&&&&&&&&&&&&&&& &param-name&BIRT_VIEWER_CUBE_MEMORY_SIZE&/param-name&
&&&&&&&&&&&&&&& &param-value&&/param-value&
&&&&&&& &/context-param&
&&&&&&& &!-- If
always overwrite generated document file. For runtime,efalult to true --&
&&&&&&& &context-param&
&&&&&&&&&&&&&&& &param-name&BIRT_OVERWRITE_DOCUMENT&/param-name&
&&&&&&&&&&&&&&& &param-value&true&/param-value&
&&&&&&& &/context-param&
&&&&&&& &!-- Define
BIRT viewer configuration file --&
&&&&&&& &context-param&
&&&&&&&&&&&&&&& &param-name&BIRT_VIEWER_CONFIG_FILE&/param-name&
&&&&&&&&&&&&&&& &param-value&WEB-INF/viewer.properties&/param-value&
&&&&&&& &/context-param&
&&&&&&& &!-- If
turn on the function that supports print on the server side. Default to on.
&&&&&&& &context-param&
&&&&&&&&&&&&&&& &param-name&BIRT_VIEWER_PRINT_SERVERSIDE&/param-name&
&&&&&&&&&&&&&&& &param-value&ON&/param-value&
&&&&&&& &/context-param&
&&&&&&& &!-- If
force optimized HTML output. Default to true --&
&&&&&&& &context-param&
&&&&&&&&&&&&&&& &param-name&HTML_ENABLE_AGENTSTYLE_ENGINE&/param-name&
&&&&&&&&&&&&&&& &param-value&true&/param-value&
&&&&&&& &/context-param&
&&&&&&& &!-- BIRT配置 --&
& &!-- BIRT配置 --&
&&&&&&& &!-- Viewer
Filter.Currently, set request character encoding to UTF-8. --&
&&&&&&& &filter&
&&& &&&&&&& &filter-name&ViewerFilter&/filter-name&
&filter-class&org.eclipse.birt.report.filter.ViewerFilter&/filter-class&
&&&&&&& &/filter&
&&!-- BIRT配置 --&
&&& &filter-mapping&
&filter-name&ViewerFilter&/filter-name&
&servlet-name&ViewerServlet&/servlet-name&
&/filter-mapping&
&filter-mapping&
&filter-name&ViewerFilter&/filter-name&
&servlet-name&EngineServlet&/servlet-name&
&&& &/filter-mapping&&&&
&!-- BIRT配置 --&
& &&& &!-- Viewer Servlet Context Listener
&&&&&&& &listener&
&&&&&&&&&&&&&&& &listener-class&org.eclipse.birt.report.listener.ViewerServletContextListener&/listener-class&
&&&&&&& &/listener&
& &!-- BIRT配置 --&
&&&&&&& &!-- Viewer
HttpSession Listener --&
&&&&&&& &listener&
&&&&&&&&&&&&&&& &listener-class&org.eclipse.birt.report.listener.ViewerHttpSessionListener&/listener-class&
&&&&&&& &/listener&
&!-- BIRT配置 --&
&&&&&&& &!-- Viewer
Servlet, Support SOAP --&&
&&&&&&& &servlet&
&&&&&&&&&&&&&&& &servlet-name&ViewerServlet&/servlet-name&
&&&&&&&&&&&&&&& &servlet-class&org.eclipse.birt.report.servlet.ViewerServlet&/servlet-class&
&&&&&&& &/servlet&
&&&&&&& &!-- Engine
Serlvet --&
&&&&&&& &servlet&
&&&&&&&&&&&&&&& &servlet-name&EngineServlet&/servlet-name&
&&&&&&&&&&&&&&& &servlet-class&org.eclipse.birt.report.servlet.BirtEngineServlet&/servlet-class&
&&&&&&& &/servlet&
&!-- BIRT配置 --&&
&&&&&&& &servlet-mapping&
&&&&&&&&&&&&&&& &servlet-name&ViewerServlet&/servlet-name&
&&&&&&&&&&&&&&& &url-pattern&/frameset&/url-pattern&
&&&&&&& &/servlet-mapping&
&&&&&&& &servlet-mapping&
&&&&&&&&&&&&&&& &servlet-name&ViewerServlet&/servlet-name&
&&&&&&&&&&&&&&& &url-pattern&/run&/url-pattern&
&&&&&&& &/servlet-mapping&
&&&&&&& &servlet-mapping&
&&&&&&&&&&&&&&& &servlet-name&EngineServlet&/servlet-name&
&&&&&&&&&&&&&&& &url-pattern&/preview&/url-pattern&
&&&&&&& &/servlet-mapping&
&&&&&&& &servlet-mapping&
&&&&&&&&&&&&&&& &servlet-name&EngineServlet&/servlet-name&
&&&&&&&&&&&&&&& &url-pattern&/download&/url-pattern&
&&&&&&& &/servlet-mapping&
&&&&&&& &servlet-mapping&
&&&&&&&&&&&&&&& &servlet-name&EngineServlet&/servlet-name&
&&&&&&&&&&&&&&& &url-pattern&/parameter&/url-pattern&
&&&&&&& &/servlet-mapping&&&
&&&&&&& &servlet-mapping&
&&&&&&&&&&&&&&& &servlet-name&EngineServlet&/servlet-name&
&&&&&&&&&&&&&&& &url-pattern&/document&/url-pattern&
&&&&&&& &/servlet-mapping&&&
&&&&&&& &servlet-mapping&
&&&&&&&&&&&&&&& &servlet-name&EngineServlet&/servlet-name&
&&&&&&&&&&&&&&& &url-pattern&/output&/url-pattern&
&&&&&&& &/servlet-mapping&&&
&&&&&&& &servlet-mapping&
&&&&&&&&&&&&&&& &servlet-name&EngineServlet&/servlet-name&
&&&&&&&&&&&&&&& &url-pattern&/extract&/url-pattern&
&&&&&&& &/servlet-mapping&&
&!-- BIRT --&
& &taglib&
&&&&&&& &taglib-uri&/birt.tld&/taglib-uri&
&&&&&&& &taglib-location&/WEB-INF/tld/birt.tld&/taglib-location&
&/taglib&&
2.2 报表查询界面集成
BIRT参数输入界面
BIRT的参数输入界面为弹出页面,并且很多个性化的参数输入类型不能满足,如日期框营销架构、级联参数等。所以就使用我们原有EXCEL报表工具输入参数的页面,通过URL传参。
集成EXCEL报表工具
新增java类
sitech/channel/common/DataConnection.java //数据库操作
sitech/channel/common/ExcelBean.java //Excel操作
sitech/channel/common/Item.java //简单实体类
sitech/channel/common/ToolsOfSystem.java //工具类
sitech/channel/common/WhereTable.java //简单实体类
sitech/channel/sireport/action/ReportAction.java
//strutsAction
sitech/channel/sireport/service/QryWhereBean.java //Excel报表Bean
sitech/channel/sireport/service/RepQueryBean.java //Excel报表Bean
DataConnection.properties //数据库链接配置文件
/gdchn/chnweb/WEB-INF/sc-sys.xml
&&& &!-- 报表 xuyd add
&&&&&&& &action
path="/sireport"
&&& &&&&&&& &&&&&&& type="sitech.channel.sireport.action.ReportAction"
&&&&&&&&& &&& validate="false"
parameter="command"&&&&&&&&&&&&&
&&&&&&&&&&&&& &&& scope="request"&&&&&
&& &&&&&&&&& &forward name="query"
path="/report/xls/index.jsp" /&&&&&
&& &&&&&&&&&
&&& &/action&
/gdchn/chnweb/report目录
/gdchn/chnweb/activeX 目录
/gdchn/chnweb/ext目录 //ext js相关文件
2.3 对BIRT显示界面的一些修改
/gdchn/chnweb/birt/pages/layout/FramesetFragment.jsp
&&&&&&&&&&&&&&&&&&&&&&& &!--& TR CLASS='body_caption_top'&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &TD
COLSPAN='2'&&/TD&
&&&&&&&&&&&&&&&&&&&&&&& &/TR&
&&&&&&&&&&&&&&&&&&&&&&& &TR
CLASS='body_caption' VALIGN='bottom'&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &TD
COLSPAN='2'&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &TABLE
BORDER=0 CELLSPACING="0" CELLPADDING="1px"
WIDTH="100%"&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &TR&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &TD
WIDTH="3px"/&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &TD&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &B&&%=
attributeBean.getReportTitle( ) %&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &/B&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &/TD&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &TD
ALIGN='right'&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &/TD&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &TD
WIDTH="3px"/&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &/TR&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &/TABLE&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &/TD&
&&&&&&&&&&&&&&&&&&&&&&& &/TR--&
/gdchn/chnweb/birt/pages/control/ToolbarFragment.jsp
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &!--
TD WIDTH="6px"/&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &TD
WIDTH="15px"&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& && &INPUT TYPE="image"
NAME='printServer' SRC="birt/images/PrintServer.gif"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& && &&&&&&&&& TITLE="&%=
BirtResources.getHtmlMessage( "birt.viewer.toolbar.printserver"
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& && &&&&&&&&& ALT="&%=
BirtResources.getHtmlMessage( "birt.viewer.toolbar.printserver"
)%&" class="birtviewer_clickable"&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &/TD--&
/gdchn/chnweb/birt/pages/control/NavigationbarFragment.jsp
&&&&&&&&&&&&&&& if(
false)//attributeBean.isShowNavigationbar( ) )
&&&&&&&&&&&&&&& {
&&&&&&& %&
&&&&&&&&&&&&&&& HEIGHT="25px"
&&&&&&& &%
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& else
&&&&&&&&&&&&&&& {
&&&&&&& %&
&&&&&&&&&&&&&&& style="display:none"
&&&&&&& &%
&&&&&&&&&&&&&&& }
&&&&&&& %&&&
/gdchn/chnweb/birt/styles/style.css
/******************************************************************************
&* Toolbar
&******************************************************************************/
.birtviewer_toolbar
&&&&&&& height:26
&&&&&&& background-color:#f0f4f5;
&&&&&&& font-family:V
&&&&&&& font-size:8
&&&&&&& border-top-width:1
&&&&&&& border-top-style:
&&&&&&& border-top-color:#808080;
&&&&&&& border-bottom-width:1
&&&&&&& border-bottom-style:
&&&&&&& border-bottom-color:#808080;
/******************************************************************************
&* Navigation bar
&******************************************************************************/
.birtviewer_navbar
&&&&&&& height:26
&&&&&&& background-color:#f0f5f5;
&&&&&&& font-family:V
&&&&&&& font-size:8
&&&&&&& border-left-color:#808080;
&&&&&&& border-left-style:
&&&&&&& border-left-width:1
2.4 备忘事项
------------配置渠道菜单时&,替换为%26
chnnew/sireport.do?command=query%26queryid=1000001
EXT以UTF-8编码
修改过滤器,sitech.channel.framework.util.CharacterEncodingFilter
&&&&&&&&&&&&&&& if("/sireport.do".equals(request.getRequestURI())){
&&&&&&&&&&&&&&&&&&&&&&& request.setCharacterEncoding("UTF-8");
&&&&&&&&&&&&&&& }
3 报表配置
1.新建一个报表模板:点击File--New File--New
Report弹出对话框如下图:
File name给报表模板命名,保存在一个路径下,可以去掉对号,自定义保存的路径。
点击 Next&
2.点击Next后进入,报表模板类型的选择,一般情况下是选择Blank Report(空白的模板类型),这样方便自己来设计模板的样式。选择Blank Report后点击Finish
3.一个命名为new_report_8的空白的报表模板已经创建完成,接下来要对这个报表进行数据源的配置,选择Data Explorer(数据资源管理的标签)
4.在Data Sources右键点击选择New Data
Source,进行数据源的配置,以创建JDBC Data Source 为例进行说明,点击Next
5.点击Next后,对数据源进行配置,点击Manage Drivers 可以加载数据库驱动文件。配置完成后点击OK,一个数据源建立完成。
6.数据源建立完成,开始建立数据集,先选择刚才创建好的数据源名字 Data
对数据集进行命名:TestDS,点击Next&
7.点击Next& ,在左边选择刚才定义好的数据源Data Source 筛选出要操作的表,可进行拖拽,也可以自己拼写SQL语句。然后点击OK。
8.一个数据集建立完成了,可以点击 Preview Results 进行预览
下面是预览的结果,可以查看输出的字段
9.建立好了数据集,接下来是要进行参数的配置,一张报表,一般情况下会输入多个参数,来查询出想得到的结果。
3.1报表模板的创建
1.新建一个报表模板:点击File--New File--New
Report弹出对话框如下图:
File name给报表模板命名,保存在一个路径下,可以去掉对号,自定义保存的路径。
点击 Next&
2.点击Next后进入,报表模板类型的选择,一般情况下是选择Blank Report(空白的模板类型),这样方便自己来设计模板的样式。选择Blank Report后点击Finish
3.一个命名为new_report_8的空白的报表模板已经创建完成,接下来要对这个报表进行数据源的配置,选择Data Explorer(数据资源管理的标签)
4.在Data Sources右键点击选择New Data
Source,进行数据源的配置,以创建JDBC Data Source 为例进行说明,点击Next
5.点击Next后,对数据源进行配置,点击Manage Drivers 可以加载数据库驱动文件。配置完成后点击OK,一个数据源建立完成。
6.数据源建立完成,开始建立数据集,先选择刚才创建好的数据源名字 Data
对数据集进行命名:TestDS,点击Next&
7.点击Next& ,在左边选择刚才定义好的数据源Data Source 筛选出要操作的表,可进行拖拽,也可以自己拼写SQL语句。然后点击OK。
8.一个数据集建立完成了,可以点击 Preview Results 进行预览
下面是预览的结果,可以查看输出的字段
3.2使用公用的数据源
Birt也可以不需要没张报表模板都建立数据源,可以创建一个公用的数据源,使每个报表模板都引用这个数据源。首先来创建一个公用的数据源。
1.点击File&&New&&New
Library,进入下面的换面,然后给公用数据源进行命名,选择公用数据源的存储路径,一般情况与报表模板存储在一个路径下。然后点击Finish.
2.进行公用数据源的配置,步骤与在报表模版中配置数据源是一样的。
首先在Data
Sources右键点击选择New Data Source,进行数据源的配置,以创建JDBC Data Source 为例进行说明,点击Next
点击Next后,对数据源进行配置,点击Manage
Drivers 可以加载数据库驱动文件。配置完成后点击OK,一个数据源建立完成。这样一个公用的数据源就建立完成了。
3.公用的数据源已经创建完成,下面就要在报表模板中引用公用数据源,还是以之前创建好的报表模板new_report_8.rptdesign为例,把刚才制作好的公用数据源引用到new_report_8模板中。
(1)首先打开new_report_8.rptdesign,然后Window&&Show View&&Resource Exploer 打开资源管理面板,在下面的截图中可以看到,我们刚才建立的功用的数据源,new_library.rptlibrary,还可以看到,定义好的数据源test_Library
5.在test_Library上点击右键,选择Add to
Report,这样就会把这个公用的数据源添加到报表模板中。
6.可以在下面的截图中看到,模板中有两个数据源,一个Data Source是之前我们在我们在报表模板中建立的,另一个 test_Library是引用自公用数据源
3.3参数的配置
下面介绍报表参数配置进行说明,参数的配置主要有两种形式,一个是?的形式,还有一种是利用script脚本进行参数的替换,下面分别说明
3.3.1配置?形式的参数
以new_report_8为例,使用之前在new_report_8建立好的数据集TestDS
打开TestDS数据集,使其引用test_Library数据源,替换了我们之前以用的Data Source数据源。
打开Query查询窗口,拼写SQL语句,?形式就是要查询时,输入的参数。
下面的两个参数,是需要从外面输入的,所以要对两个参数进行配置。
下面如图是要配置两个要输入的参数,进行查询,右键Report Parameters&&New Parameter
Parameter,进入配置参数的界面,配置参数名称、参数类型、参数展示的形式,默认值等信息,如果参数不是必须填写的可以把IS Required的勾去掉。配置完成点击OK
为刚才数据集的两个参数已经配置好,如下图
接下来是让TestDS数据集引用配置好的两个参数,打开数据集TestDS
点击左侧Parameters&&New
把刚才配置好的两个参数引入进来,注意参数的顺序要与?号的顺序一致。这样?形式的参数就配置完成了。可以进行预览
3.3.2配置脚本形式的参数
还是引用上面的数据集,是以脚本替换的形式进行查询的,打开TestDS数据集然后进行SQL语句的拼写。
在刚才的SQL语句基础上多了一个条件,是rownum&=
${rownum}是要在脚本中被替换的。在Parameters中配置rownum参数
下面进入script脚本中,选中TestDS,右侧报表工作区,点击script, BeforeOpen下编写脚本。Before Open表示在执行SQL语句之前进行了参数的替换。这样就可以脚本形式替换参数,就可以执行了。
3.1 隔行高亮显示
点击右侧报表配置工作区中的LayOutb标签,选中要高亮显示的行,一般是Table-Detail,选择Higthgts,点击Add
点击Add 弹出窗口进行配置如图进行配置:
3.2 引用定义好的CSS样式
显示出Outline,删除style下birt默认的样式,引用定义好的样式
然后右键 Styles&&Use CSS File,引用外部定义好的birt.css.
(1)表头如何引用样式:
选中Table-Header右键&&Style&&Apply Style&&table-th
(2)如何引用报表内容样式:
选中Table-Detail右键&&Style&&Apply Style&&tables-rows
(3)报表最后一样引用样式
选中Table-Footer右键&&Style&&Apply Style&&tables-last-row
(3)固定表头使其内容显示在一行
选中要固定的内容右键&&Style&&Apply Style&&tip
3.3 图表配置
表TEST_CHART
是否可为空
VARCHAR2(6)
VARCHAR2(10)
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('200910', '2G开户', 9000);
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('200910', '3G开户', 7500);
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('200910', '上网卡', 5700);
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('200911', '2G开户', 3000);
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('200911', '3G开户', 2500);
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('200911', '上网卡', 7700);
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('200912', '2G开户', 900);
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('200912', '3G开户', 750);
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('200912', '上网卡', 570);
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('201001', '2G开户', 9900);
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('201001', '3G开户', 9750);
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('201001', '上网卡', 9570);
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('201002', '2G开户', 2900);
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('201002', '3G开户', 2750);
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('201002', '上网卡', 2570);
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('201003', '2G开户', 9900);
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('201003', '3G开户', 9750);
insert into TEST_CHART (YEARMONTH, TYPE, NUM)
values ('201003', '上网卡', 9570);
新建数据集
选中数据集
修改markers大小为2
3.4 字段收敛(根据用户group_id隐藏字段)
以[ 2G发展量报表 ]为例
根据不同用户,判断是否隐藏后付费用户数
省中心用户
表DFND_HIDDEN_COL:
是否可为空
FUNCTION_CODE
VARCHAR2(10)
LOGIN_GROUP_ID
VARCHAR2(10)
登陆group_id
HIDDEN_SEQ1
HIDDEN_NOTE1
VARCHAR2(40)
HIDDEN_SEQ2
HIDDEN_NOTE2
VARCHAR2(40)
HIDDEN_SEQ3
HIDDEN_NOTE3
VARCHAR2(40)
HIDDEN_SEQ4
HIDDEN_NOTE4
VARCHAR2(40)
HIDDEN_SEQ5
HIDDEN_NOTE5
VARCHAR2(40)
FUNCTION_CODE
LOGIN_GROUP_ID
HIDDEN_SEQ1
HIDDEN_NOTE1
HIDDEN_SEQ2
后付费发展数
数据集beforeOpen脚本中增加
this.queryText = this.queryText.replaceAll("\\$\\{login_group_id\\}",params["loginGroupId"].value);
修改报表Sqlquery
新增红色字体部分
SELECT &aa.*, bb.hidden_seq1 from (
SELECT &&d.GROUP_ID,
&&&&&&&& CASE
d.root_distance
&&&&&&&&&&& WHEN
&&&&&&&&&&&&&& THEN
SUBSTR (d.group_name, 5, 2)
&&&&&&&&&&& ELSE
d.group_name
&&&&&&&& END
group_name,
&&&&&&&& e.class_code,
e.class_name, g.brand_type_name t0,
&&&&&&&& SUM
(pre_lucky) t1, SUM (pre_pop) t2, SUM
(pre_up) t3,
&&&&&&&& SUM
(pre_other) t4, SUM (pre_tot) t5, SUM
(after_world) t6,
&&&&&&&& SUM
(tot_2g) t7,
d.queue_index, d.root_distance rd1,
&&&&&&&& e.root_distance rd2,
&&&&&&&& '${login_group_id}'
login_group_id
pmrt.tb_rpt_2g_serv_day
&&&&&&&& dchngroupmsg b,
&&&&&&&& dchngroupinfo c,
&&&&&&&& schnclassinfo f,
&&&&&&&& schnbrandcode g,
&&&&&&&& (SELECT b.GROUP_ID,
a.group_name, a.queue_index, a.root_distance
&&&&&&&&&&& FROM
dchngroupmsg a, dchngroupinfo b
&&&&&&&&&& WHERE
b.parent_group_id = '${parent_group_id}'
&&&&&&&&&&&& AND
b.denorm_level = '${group_level}'
&&&&&&&&&&&& AND
a.GROUP_ID = b.GROUP_ID) d,
&&&&&&&& (SELECT
b.class_code, a.class_name, a.root_distance
&&&&&&&&&&& FROM
schnclassmsg a, schnclassinfo b
&&&& &&&&&&WHERE b.parent_class_code
= '${parent_class_code}'
&&&&&&&&&&&& AND
b.denorm_level = '${class_level}'
&&&&&&&&&&&& AND
a.class_code = b.class_code) e
a.GROUP_ID = b.GROUP_ID
b.GROUP_ID = c.GROUP_ID
b.class_code = f.class_code
c.parent_group_id = d.GROUP_ID
f.parent_class_code = e.class_code
a.deal_date &= ${begin_time} and
a.deal_date&=${end_time}
a.product_id = g.product_id
g.brand_type = '10'
GROUP BY d.GROUP_ID,
&&&&&&&& e.class_code,
&&&&&&&& d.group_name,
&&&&&&&& e.class_name,
&&&&&&&& brand_type_name,
&&&&&&&& d.queue_index,
&&&&&&&& d.root_distance,
&&&&&&&& e.root_distance
ORDER BY d.queue_index) aa,
dfnd_hidden_col bb
where aa.login_group_id = bb.login_group_id(+)
and bb.function_code(+) = '9445'
修改报表模板
选中要隐藏的字段
Visibility中选中hide
修改表达式
4 尚未解决问题列表
问题解决条件
计划解决时间
Word导出乱码
4.1 表头固定
当报表超出页面,出现滚动条时。最好可以固定表头,这样用户可以清楚看到是哪一项指标。如EXCEL锁定列功能,最好也能实现。估计用户以后会提这个需求。
4.2 Word导出乱码
Unix主机上导出Word时乱码,可能和主机字体设置有关系。BIRT找不到相应的字体文件。
阅读(...) 评论()

我要回帖

更多关于 session的取值与传值 的文章

 

随机推荐