zoukankan      html  css  js  c++  java
  • BIRT 说

     

     

     

     

    BIRT

    使用说明书

    Vx.x

     

     

     

    北京神州数码思特奇信息技术股份有限公司

    二〇一〇年四月


     

    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 也提供了图表引擎让你能为应用增加图表。

    扩展阅读:

    1.www.eclipse.org/birt

    2.www.birt-exchange.com

    3.www.actuate.com

    4.www.actuatechina.com

    目前最新版本为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传参。

    2.2.1 集成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:26px;

            background-color:#f0f4f5;

            font-family:Verdana;

            font-size:8pt;

            border-top-1px;

            border-top-style:solid;

            border-top-color:#808080;

            border-bottom-1px;

            border-bottom-style:solid;

            border-bottom-color:#808080;

    }

    /******************************************************************************

     * Navigation bar

     ******************************************************************************/

    .birtviewer_navbar

    {

            height:26px;

            background-color:#f0f5f5;

            font-family:Verdana;

            font-size:8pt;

            border-left-color:#808080;

            border-left-style:solid;

            border-left-1px;

    }

    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 Souce,

    对数据集进行命名: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 Souce.

    对数据集进行命名: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

    点击New 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

    字段名

    字段类型

    是否可为空

    YEARMONTH

    VARCHAR2(6)

    Y

    TYPE

    VARCHAR2(10)

    Y

    NUM

    NUMBER(8)

    Y

    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);

    commit;

    新建数据集

    选中数据集

    修改markers大小为2

    3.4 字段收敛(根据用户group_id隐藏字段)

    以[ 2G发展量报表 ]为例

    根据不同用户,判断是否隐藏后付费用户数

    省中心用户

    地市用户

    表DFND_HIDDEN_COL:

    字段名

    字段类型

    是否可为空

    含义

    FUNCTION_CODE

    VARCHAR2(10)

    N

    功能代码

    LOGIN_GROUP_ID

    VARCHAR2(10)

    N

    登陆group_id

    HIDDEN_SEQ1

    NUMBER

    Y

    1为隐藏

    HIDDEN_NOTE1

    VARCHAR2(40)

    Y

     

    HIDDEN_SEQ2

    NUMBER

    Y

     

    HIDDEN_NOTE2

    VARCHAR2(40)

    Y

     

    HIDDEN_SEQ3

    NUMBER

    Y

     

    HIDDEN_NOTE3

    VARCHAR2(40)

    Y

     

    HIDDEN_SEQ4

    NUMBER

    Y

     

    HIDDEN_NOTE4

    VARCHAR2(40)

    Y

     

    HIDDEN_SEQ5

    NUMBER

    Y

     

    HIDDEN_NOTE5

    VARCHAR2(40)

    Y

     

    FUNCTION_CODE

    LOGIN_GROUP_ID

    HIDDEN_SEQ1

    HIDDEN_NOTE1

    HIDDEN_SEQ2

    9445

    16128

    1

    后付费发展数

     

    3.4.1 数据集beforeOpen脚本中增加

    this.queryText = this.queryText.replaceAll("\\$\\{login_group_id\\}",params["loginGroupId"].value);

    3.4.2 修改报表Sqlquery

    新增红色字体部分

    SELECT  aa.*, bb.hidden_seq1 from (

    SELECT   d.GROUP_ID,

             CASE d.root_distance

                WHEN 1

                   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

        FROM pmrt.tb_rpt_2g_serv_day a,

             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

       WHERE a.GROUP_ID = b.GROUP_ID

         AND b.GROUP_ID = c.GROUP_ID

         AND b.class_code = f.class_code

         AND c.parent_group_id = d.GROUP_ID

         AND f.parent_class_code = e.class_code

         AND a.deal_date >= ${begin_time} and a.deal_date<=${end_time}

         AND a.product_id = g.product_id

         AND 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'

    3.4.3 修改报表模板

    选中要隐藏的字段

    Visibility中选中hide Element

    修改表达式

    4 尚未解决问题列表

     

    问题编号

    问题描述

    问题解决条件

    计划解决时间

    1

    表头固定

    2

    Word导出乱码

    4.1 表头固定

    当报表超出页面,出现滚动条时。最好可以固定表头,这样用户可以清楚看到是哪一项指标。如EXCEL锁定列功能,最好也能实现。估计用户以后会提这个需求。

    4.2 Word导出乱码

    Unix主机上导出Word时乱码,可能和主机字体设置有关系。BIRT找不到相应的字体文件。

  • 相关阅读:
    当简单的计算遇上了大数,其实大数运算也很简单
    揭开源码的神秘面纱,让源码从此无处藏身
    JAVA对象和XML文档、原来他们之间还有这一出
    JAVA反射其实就是那么一回事
    Metatable让我从心认知了Lua(相知篇)
    Github
    常见问题汇总
    文章目录
    前后端分离下使用SignalR
    IdentityServer_0_参考资料
  • 原文地址:https://www.cnblogs.com/canyangfeixue/p/2842927.html
Copyright © 2011-2022 走看看