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 也提供了圖表引擎讓你能為應用增加圖表。
擴展閱讀:
目前最新版本為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-width:1px;
border-top-style:solid;
border-top-color:#808080;
border-bottom-width: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-width: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找不到相應的字體文件。