posts - 297,  comments - 1618,  trackbacks - 0
           

          1.    復合JavaBean數據源

          1.1 說明

          在使用Eclipse BIRT進行報表開發時,會遇到使用復合型的JavaBean作為數據源的情況,例如Contact對象有一個Address類型的對應address,而Address對象又具有兩個屬性,分別為addressIdaddressName,在此種情況下應該使用Eclipse BIRT提供的“Script Data Source”進行數據源。如下將通過實例展現在Eclipse BIRT中如何使用復合JavaBean作為數據源。

          所用環境說明:

          IDE環境:birt-report-designer-all-in-one-2_2_1_1;、

          Tomcat5.5.27

          Eclipse BIRT版本:2.2.1

          birt-runtime-2_2_1_1

          1.2 開發實例

          1.2.1 Java工程中創建復合JavaBeanContact.java

          在集成了BIRTEclipse中建立Java工程:birtJavaProject,并建立amigo.report包,并在該包下建立復合JavaBean的類:Contact.java,該類的代碼如下所示:

          package amigo.report;

          public class Contact {

              
          private String firstName;

              
          private String lastName;

              
          private String phoneNum;

              
          private Address address;

              
          public Contact(

                   String firstName, String lastName,

                   String phoneNum, Address address)
          {

                  
          this.firstName = firstName;

                  
          this.lastName = lastName;

                  
          this.phoneNum = phoneNum;

                  
          this.address = address;

              }


              
          // 省略getter/setter方法

          }

           

          1.2.2 Java工程創建復合JavaBean的關聯JavaBeanAddress.java

          接下來在amigo.report包下建立Contact類關聯的JavaBean類,代碼如下所示:

          package amigo.report;

          public class Address {

              
          private String addressId;

              
          private String addressName;

              
          public Address(String addressId, String addressName) {

                  
          this.addressId = addressId;

                  
          this.addressName = addressName;

              }


              
          // 省略getter/setter方法

          }



          1.2.3 Java工程中創建數據工廠類ContactListFactory.java

          Java工程中還需要創建制造數據的工程類:ContactListFactory.java,該類的代碼如下所示:

          package amigo.report;

          /**

           * 數據制造工廠類.

           * 
          @author AmigoXie(xieingxing1121@126.com)

           
          */


          public class ContactListFactory {

              
          public Contact[] createContactList(){

                  Contact[] c 
          = new Contact[10];

                  Address address1 
          = new Address("1""address1");

                  Address address2 
          = new Address("2""address2");

                  Address address3 
          = new Address("3""address3");

                  Address address4 
          = new Address("4""address4");

                  c[
          0= new Contact("stavros""kounis""2310886269", address1);

                  c[
          1= new Contact("dimitris""kounis""2310888270", address2);

                  c[
          2= new Contact("dimitris""adamos""2310998417", address3);

                  c[
          3= new Contact("nikos""koufotolis""2321013770", address4);

                  c[
          4= new Contact("""星星""1399998383", address1);

                  c[
          5= new Contact("""蜜果""13535353", address1);

                  c[
          6= new Contact("test0""test00""1388996969", address1);

                  c[
          7= new Contact("test1""test11""33333", address3);

                  c[
          8= new Contact("test2""test22""44444", address2);

                  c[
          9= new Contact("test3""test33""66666", address3);

                  
          return c;

              }


          }



          截至此步,Java源碼已經編寫完畢,余下的工作是做報表編程。

          1.2.4 創建報表工程

          在開發環境中選擇“New-> Project”,如下所示:


          在彈出對話框選擇“Bussiness Intelligence… -> Report Project”,如下圖所示:

           


          而后點擊“Next  >,在彈出對話框中輸入報表工程的名稱“birtreport”后,點擊“Finish”按鈕完成報表工程的創建。

          1.2.5 創建報表

                   選擇報表工程“birtreport”后點擊右鍵,選擇“New –> Report”,如下圖所示:


           

          在彈出窗口中輸入報表的名稱:helloBirt.rptdesign,點擊“Finish”按鈕完成報表的創建。

          1.2.6 創建Scripted數據源

          使用JavaBean作為數據源,需要創建Script數據源。首先打開“Data Explorer”視圖,(若該視圖被關閉,請使用“Show View”打開)。在“Data Explorer”中選擇“Data Sources->New Data Source”,如下圖所示:
               

          創建數據源的彈出窗口如下圖所示:


           

          在上述窗口中選擇“Scripted Data Source”,在“Data Source Name”中輸入數據源的名字,例如“Data Source”,點擊“Finish”按鈕完成數據源的創建。

          1.2.7 創建數據集

          在“Data Explorer”視圖中點擊“Data Sets->New Data Set”,彈出窗口如下所示:


           

          在“Data Set Name”中輸入數據集的名稱,例如“Data Set”,在“Data Source”中選擇剛才創建的Scripted數據源,而后點擊“Next >”按鈕,輸入列名和顯示名稱等信息,窗口如下所示:


           

          1.2.8 編寫數據訪問腳本

          打開“helloBirt.rptdesign”,切換到“Script”,在“Data Explorer”視圖中選擇剛才創建的數據集,open對應的腳本如下所示:

          count = 0;

          cf = new Packages.amigo.report.ContactListFactory();

          c = cf.createContactList();

          對應圖形如下所示:


           

          在“Script”的下拉框中選擇“fetch”,對應的腳本如下所示:

          if (count <= c.length - 1){

              row["firstName"] = c[count].getFirstName();

              row["lastName"] = c[count].getLastName();

              row["phoneNum"] = c[count].getPhoneNum();

              row["addressId"] = c[count].getAddress().getAddressId();

              row["addressName"] = c[count].getAddress().getAddressName();

              count ++;

              return true;

          }

          1.2.9 設計報表視圖

          視圖中選擇layout,簡單的將我們建立的data set 拖到報表視圖中即可,完成這步以后可以在preview中查看預覽效果了。

          1.2.10 部署與瀏覽

          birt-runtime-2_2_1_1目錄下的WebViewerExample工程拷貝到Tomcatwebapps下面,并將helloBirt.rptdesign報表文件拷貝到Tomcat根目錄/webapps/WebViewerExample工程下。

          接著在:Tomcat根目錄/webapps/WebViewerExample/WEB-INF目錄下建立classes子目錄,存放Java工程中的三個類文件對應的class文件,將birtJavaProject/bin下的amigo目錄整個拷貝到Tomcat根目錄/webapps/WebViewerExample/WEB-INF/classes目錄,完成報表文件的部署。

          訪問地址為:

          http://localhost:8080/WebViewerExample/frameset?__report=helloBirt.rptdesign

          在瀏覽器的運行效果圖如下所示:

          2.    JavaBean數據源的數據進行分組

          2.1 說明

          在復合JavaBean作為數據源的實例中,展示了如何進行復合JavaBean數據的展示,但是在某些情況下,需要對JavaBean進行分組顯示,本實例將展示如何對JavaBean數據源進行分組顯示。

          2.2 開發實例

          2.2.1 創建報表

          在報表工程中創建報表groupByReport.rptdesign,創建方式與上例一樣。

          2.2.2 創建數據源和數據集

          因為該實例的數據源和數據集與上例相同,只需要在“Data Explorer”視圖中將數據源和數據集拷貝到本實例即可,編寫的數據訪問腳本和設計的報表也與上例一樣。

          2.2.3 對數據進行分組

          接下來將向讀者展示如何按照addressId對數據進行分組,首先在“Layout”中選擇table后,點擊右鍵,選擇“Insert Group-> Above”,如下所示:

          彈出的新建分組的窗口如下所示,在窗口中輸入分組的名稱,例如:addressIdGroup,在“Group on”中選擇“addressId”,在“Interval”中選擇“Interval”,在“Range”中輸入1,如下圖所示:


           

                   在上圖中點擊“OK”按鈕完成分組的創建。

          2.2.4 部署與瀏覽

                   部署的方法與上例相似,訪問地址為:

          http://localhost:8080/WebViewerExample/frameset?__report=groupByReport.rptdesign

                   運行效果如下圖所示:


           

          3.    BIRT集成到現有Web項目中

          3.1 說明

                   在上面的實例中,將報表和相關的類文件放在BIRT對應的Web項目WebViewerExample中來進行報表的查看和瀏覽,但是在實際的開發過程中,已經有Web項目,將報表的部分部署到WebViewerExample項目,而其它的部分部署到另一個Web項目,顯然不太合適,本實例講解如何將BIRT集成到現有的Web項目中,并進行報表的查看。

                   參考文章:http://blog.csdn.net/bjd14/archive/2006/12/25/1458947.aspx

          3.2 集成實例

          3.2.1 新建項目的Web工程

                   MyEclipse新建一個Web Project,名為reportintegration,將上例中的amigo.report包以及其下的所有三個類(Contact.javaAddress.javaContactListFactory.java)拷貝到src目錄下。并將helloBirt.rptdesigngroupByReport.rptdesign兩個報表文件拷貝到WebRoot目錄下。

          3.2.2 拷貝BIRTWeb項目WebViewerExample的文件

                   打開Tomcat下的WebViewerExample項目,其目錄結構如下圖所示:


           

                   將該目錄下的兩個子目錄reportwebcontent拷貝到工程的WebRoot目錄下。

                   接下來進入WebViewerExample"WEB-INF目錄,目錄結構如下所示:


           

                   libplatformtlds三個子目錄拷貝到Web工程的WebRoot"WEB-INF目錄,并拷貝server-config.wsddviewer.propertiesweb.xml三個文件。到此所有文件都拷貝完畢。Web工程的結構如下圖所示:


                   lib目錄的結構如下圖所示:


          3.2.3 部署與瀏覽

                   部署reportintegrationTomcat下,啟動成功后,訪問路徑類似如下所示:

          http://localhost:8080/reportintegration/frameset?__report=groupByReport.rptdesign

          運行效果與上例一樣,不再贅述。

          3.2.4 訪問參數說明

          在訪問時,路徑實例如下所示:

          http://localhost:8080/reportintegration/frameset?__report=groupByReport.rptdesign

          其中”__report”表示訪問的報表文件的路徑,若將groupByReport.rptdesign報表文件拷貝到WebRoot/report目錄下,則訪問路徑變成:

          http://localhost:8080/reportintegration/frameset?__report=report/groupByReport.rptdesign

          其它訪問參數的說明如下所示:

          選項

          說明

          __format

          報表輸出格式:htmlpdf,缺省是html。對于frameset不起作用。

          __isnull

          指明一個參數是null,常用于字符串類型。如果提供參數且值為空: - 對于日期和數字類型,BIRT會將它們當作null處理。 - 對于字符串,BIRT會將它作為空字符串。因此,為了說明某個字符串是null,通常寫為:__isnull=參數。

          __locale

          本地化選項,缺省是jvmlocale

          __report

          報表設計文件路徑。

          報表參數

          報表參數參數值對,形式:參數名=參數值。對于frameset,直接在地址欄中輸入參數名=參數值后回車,不會影響報表結果。雖然,此時選擇"運行報表"時,彈出的參數值已經改變。

          posted on 2009-05-03 12:11 阿蜜果 閱讀(14952) 評論(11)  編輯  收藏 所屬分類: Eclipse BIRT


          FeedBack:
          # re: Eclipse BIRT問題解決匯總(不斷更新)
          2009-05-04 10:30 | 谷百優
          谷百優支持你  回復  更多評論
            
          # re: Eclipse BIRT問題解決匯總(不斷更新)[未登錄]
          2009-05-04 13:01 | james
          真麻煩,做個報表要寫這么多代碼...
            回復  更多評論
            
          # re: Eclipse BIRT問題解決匯總(不斷更新)
          2009-05-05 10:16 | 谷百優
          頂。。。。。。。。  回復  更多評論
            
          # re: Eclipse BIRT問題解決匯總(不斷更新)[未登錄]
          2009-05-07 00:08 | fantasybei
          mm,好久不見你寫blog阿,呵呵  回復  更多評論
            
          # re: Eclipse BIRT問題解決匯總(不斷更新)
          2009-05-13 17:01 | 導導
          你叫謝星星?  回復  更多評論
            
          # re: Eclipse BIRT問題解決匯總(不斷更新)[未登錄]
          2009-05-21 14:13 | 1
          好像不對啊
          報錯
          我最近才開始學習birt  回復  更多評論
            
          # re: Eclipse BIRT問題解決匯總(不斷更新)
          2009-06-02 09:34 | sgwood
          還有個close方法沒寫  回復  更多評論
            
          # re: Eclipse BIRT問題解決匯總(不斷更新)[未登錄]
          2009-09-03 10:20 | Glen
          支持 條理清晣的詳盡實用教學。  回復  更多評論
            
          # re: Eclipse BIRT問題解決匯總(不斷更新)[未登錄]
          2009-09-03 10:32 | Glen
          May I ask how can I calculate subtotal quantity of productA for each page. Should I use IntervalGroup ? If so, How can I make use of it?

          Detail as follow:

          Page1
          Product_1 --> 3 Pcs
          Product_2 --> 4 Pcs
          Product_3 --> 5 Pcs
          ....
          ....
          ....

          Subtotal = 12 Pcs

          Page2

          Product_5 --> 6 Pcs
          Product_6 --> 6 Pcs
          Product_7 --> 6 Pcs

          Subtotal = 18 Pages

          --> Final Page
          Total = 30 Pcs




            回復  更多評論
            
          # re: Eclipse BIRT問題解決匯總(不斷更新)
          2010-01-15 16:52 | arrick
          if (count <= c.length - 1){

          row["firstName"] = c[count].getFirstName();

          row["lastName"] = c[count].getLastName();

          row["phoneNum"] = c[count].getPhoneNum();

          row["addressId"] = c[count].getAddress().getAddressId();

          row["addressName"] = c[count].getAddress().getAddressName();

          count ++;

          return true;

          }

          return false; 這里少復制了一句return false; 結果 總是報錯. 不清楚是什么原因. 因為剛剛接觸birt. 不了解script數據庫 所以耽誤了很多時間... 希望大家引以為戒.
          當前報表的script的下拉close事件里面 加上cf = null; c = null;
            回復  更多評論
            
          # re: Eclipse BIRT問題解決匯總(不斷更新)
          2013-06-25 18:47 | 路過
          試過了,我這兩天開始學的,看到這個初學不錯。但是有些問題里面
          我用的事4.2版本
          1)需要把java工程下的那個編譯好的包copy到eclipse下的plugins\org.eclipse.birt.report.viewer_4.2.2.v201302041142\birt\WEB-INF\classes下面,否側是報表時會報錯誤的。
          2)按地址分組時候,我按圖設置了interval,報錯。不需要設置這項  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2009年5月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

                生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
                我的作品:
                玩轉Axure RP  (2015年12月出版)
                

                Power Designer系統分析與建模實戰  (2015年7月出版)
                
               Struts2+Hibernate3+Spring2   (2010年5月出版)
               

          留言簿(263)

          隨筆分類

          隨筆檔案

          文章分類

          相冊

          關注blog

          積分與排名

          • 積分 - 2296538
          • 排名 - 3

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 华蓥市| 谢通门县| 蓝山县| 桃江县| 东阿县| 沂源县| 浦北县| 柘城县| 台江县| 遂昌县| 新丰县| 三穗县| 克拉玛依市| 榆社县| 井冈山市| 邹城市| 峨眉山市| 梧州市| 河池市| 龙口市| 河曲县| 洮南市| 闽侯县| 密山市| 巴楚县| 红河县| 临江市| 拉孜县| 会同县| 平定县| 菏泽市| 麻栗坡县| 周宁县| 镇坪县| 祁门县| 古丈县| 井研县| 涪陵区| 巧家县| 延边| 贡山|