<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 297,  comments - 1618,  trackbacks - 0
     

    1.    復(fù)合JavaBean數(shù)據(jù)源

    1.1 說(shuō)明

    在使用Eclipse BIRT進(jìn)行報(bào)表開發(fā)時(shí),會(huì)遇到使用復(fù)合型的JavaBean作為數(shù)據(jù)源的情況,例如Contact對(duì)象有一個(gè)Address類型的對(duì)應(yīng)address,而Address對(duì)象又具有兩個(gè)屬性,分別為addressIdaddressName,在此種情況下應(yīng)該使用Eclipse BIRT提供的“Script Data Source”進(jìn)行數(shù)據(jù)源。如下將通過(guò)實(shí)例展現(xiàn)在Eclipse BIRT中如何使用復(fù)合JavaBean作為數(shù)據(jù)源。

    所用環(huán)境說(shuō)明:

    IDE環(huán)境: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 開發(fā)實(shí)例

    1.2.1 Java工程中創(chuàng)建復(fù)合JavaBeanContact.java

    在集成了BIRTEclipse中建立Java工程:birtJavaProject,并建立amigo.report包,并在該包下建立復(fù)合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工程創(chuàng)建復(fù)合JavaBean的關(guān)聯(lián)JavaBeanAddress.java

    接下來(lái)在amigo.report包下建立Contact類關(guān)聯(lián)的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工程中創(chuàng)建數(shù)據(jù)工廠類ContactListFactory.java

    Java工程中還需要?jiǎng)?chuàng)建制造數(shù)據(jù)的工程類:ContactListFactory.java,該類的代碼如下所示:

    package amigo.report;

    /**

     * 數(shù)據(jù)制造工廠類.

     * 
    @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源碼已經(jīng)編寫完畢,余下的工作是做報(bào)表編程。

    1.2.4 創(chuàng)建報(bào)表工程

    在開發(fā)環(huán)境中選擇“New-> Project”,如下所示:


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

     


    而后點(diǎn)擊“Next  >,在彈出對(duì)話框中輸入報(bào)表工程的名稱“birtreport”后,點(diǎn)擊“Finish”按鈕完成報(bào)表工程的創(chuàng)建。

    1.2.5 創(chuàng)建報(bào)表

             選擇報(bào)表工程“birtreport”后點(diǎn)擊右鍵,選擇“New –> Report”,如下圖所示:


     

    在彈出窗口中輸入報(bào)表的名稱:helloBirt.rptdesign,點(diǎn)擊“Finish”按鈕完成報(bào)表的創(chuàng)建。

    1.2.6 創(chuàng)建Scripted數(shù)據(jù)源

    使用JavaBean作為數(shù)據(jù)源,需要?jiǎng)?chuàng)建Script數(shù)據(jù)源。首先打開“Data Explorer”視圖,(若該視圖被關(guān)閉,請(qǐng)使用“Show View”打開)。在“Data Explorer”中選擇“Data Sources->New Data Source”,如下圖所示:
         

    創(chuàng)建數(shù)據(jù)源的彈出窗口如下圖所示:


     

    在上述窗口中選擇“Scripted Data Source”,在“Data Source Name”中輸入數(shù)據(jù)源的名字,例如“Data Source”,點(diǎn)擊“Finish”按鈕完成數(shù)據(jù)源的創(chuàng)建。

    1.2.7 創(chuàng)建數(shù)據(jù)集

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


     

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


     

    1.2.8 編寫數(shù)據(jù)訪問(wèn)腳本

    打開“helloBirt.rptdesign”,切換到“Script”,在“Data Explorer”視圖中選擇剛才創(chuàng)建的數(shù)據(jù)集,open對(duì)應(yīng)的腳本如下所示:

    count = 0;

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

    c = cf.createContactList();

    對(duì)應(yīng)圖形如下所示:


     

    在“Script”的下拉框中選擇“fetch”,對(duì)應(yīng)的腳本如下所示:

    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 設(shè)計(jì)報(bào)表視圖

    視圖中選擇layout,簡(jiǎn)單的將我們建立的data set 拖到報(bào)表視圖中即可,完成這步以后可以在preview中查看預(yù)覽效果了。

    1.2.10 部署與瀏覽

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

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

    訪問(wèn)地址為:

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

    在瀏覽器的運(yùn)行效果圖如下所示:

    2.    對(duì)JavaBean數(shù)據(jù)源的數(shù)據(jù)進(jìn)行分組

    2.1 說(shuō)明

    在復(fù)合JavaBean作為數(shù)據(jù)源的實(shí)例中,展示了如何進(jìn)行復(fù)合JavaBean數(shù)據(jù)的展示,但是在某些情況下,需要對(duì)JavaBean進(jìn)行分組顯示,本實(shí)例將展示如何對(duì)JavaBean數(shù)據(jù)源進(jìn)行分組顯示。

    2.2 開發(fā)實(shí)例

    2.2.1 創(chuàng)建報(bào)表

    在報(bào)表工程中創(chuàng)建報(bào)表groupByReport.rptdesign,創(chuàng)建方式與上例一樣。

    2.2.2 創(chuàng)建數(shù)據(jù)源和數(shù)據(jù)集

    因?yàn)樵搶?shí)例的數(shù)據(jù)源和數(shù)據(jù)集與上例相同,只需要在“Data Explorer”視圖中將數(shù)據(jù)源和數(shù)據(jù)集拷貝到本實(shí)例即可,編寫的數(shù)據(jù)訪問(wèn)腳本和設(shè)計(jì)的報(bào)表也與上例一樣。

    2.2.3 對(duì)數(shù)據(jù)進(jìn)行分組

    接下來(lái)將向讀者展示如何按照addressId對(duì)數(shù)據(jù)進(jìn)行分組,首先在“Layout”中選擇table后,點(diǎn)擊右鍵,選擇“Insert Group-> Above”,如下所示:

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


     

             在上圖中點(diǎn)擊“OK”按鈕完成分組的創(chuàng)建。

    2.2.4 部署與瀏覽

             部署的方法與上例相似,訪問(wèn)地址為:

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

             運(yùn)行效果如下圖所示:


     

    3.    BIRT集成到現(xiàn)有Web項(xiàng)目中

    3.1 說(shuō)明

             在上面的實(shí)例中,將報(bào)表和相關(guān)的類文件放在BIRT對(duì)應(yīng)的Web項(xiàng)目WebViewerExample中來(lái)進(jìn)行報(bào)表的查看和瀏覽,但是在實(shí)際的開發(fā)過(guò)程中,已經(jīng)有Web項(xiàng)目,將報(bào)表的部分部署到WebViewerExample項(xiàng)目,而其它的部分部署到另一個(gè)Web項(xiàng)目,顯然不太合適,本實(shí)例講解如何將BIRT集成到現(xiàn)有的Web項(xiàng)目中,并進(jìn)行報(bào)表的查看。

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

    3.2 集成實(shí)例

    3.2.1 新建項(xiàng)目的Web工程

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

    3.2.2 拷貝BIRTWeb項(xiàng)目WebViewerExample的文件

             打開Tomcat下的WebViewerExample項(xiàng)目,其目錄結(jié)構(gòu)如下圖所示:


     

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

             接下來(lái)進(jìn)入WebViewerExample"WEB-INF目錄,目錄結(jié)構(gòu)如下所示:


     

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


             lib目錄的結(jié)構(gòu)如下圖所示:


    3.2.3 部署與瀏覽

             部署reportintegrationTomcat下,啟動(dòng)成功后,訪問(wèn)路徑類似如下所示:

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

    運(yùn)行效果與上例一樣,不再贅述。

    3.2.4 訪問(wèn)參數(shù)說(shuō)明

    在訪問(wèn)時(shí),路徑實(shí)例如下所示:

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

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

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

    其它訪問(wèn)參數(shù)的說(shuō)明如下所示:

    選項(xiàng)

    說(shuō)明

    __format

    報(bào)表輸出格式:htmlpdf,缺省是html。對(duì)于frameset不起作用。

    __isnull

    指明一個(gè)參數(shù)是null,常用于字符串類型。如果提供參數(shù)且值為空: - 對(duì)于日期和數(shù)字類型,BIRT會(huì)將它們當(dāng)作null處理。 - 對(duì)于字符串,BIRT會(huì)將它作為空字符串。因此,為了說(shuō)明某個(gè)字符串是null,通常寫為:__isnull=參數(shù)。

    __locale

    本地化選項(xiàng),缺省是jvmlocale

    __report

    報(bào)表設(shè)計(jì)文件路徑。

    報(bào)表參數(shù)

    報(bào)表參數(shù)參數(shù)值對(duì),形式:參數(shù)名=參數(shù)值。對(duì)于frameset,直接在地址欄中輸入?yún)?shù)名=參數(shù)值后回車,不會(huì)影響報(bào)表結(jié)果。雖然,此時(shí)選擇"運(yùn)行報(bào)表"時(shí),彈出的參數(shù)值已經(jīng)改變。

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


    FeedBack:
    # re: Eclipse BIRT問(wèn)題解決匯總(不斷更新)
    2009-05-04 10:30 | 谷百優(yōu)
    谷百優(yōu)支持你  回復(fù)  更多評(píng)論
      
    # re: Eclipse BIRT問(wèn)題解決匯總(不斷更新)[未登錄]
    2009-05-04 13:01 | james
    真麻煩,做個(gè)報(bào)表要寫這么多代碼...
      回復(fù)  更多評(píng)論
      
    # re: Eclipse BIRT問(wèn)題解決匯總(不斷更新)
    2009-05-05 10:16 | 谷百優(yōu)
    頂。。。。。。。。  回復(fù)  更多評(píng)論
      
    # re: Eclipse BIRT問(wèn)題解決匯總(不斷更新)[未登錄]
    2009-05-07 00:08 | fantasybei
    mm,好久不見你寫blog阿,呵呵  回復(fù)  更多評(píng)論
      
    # re: Eclipse BIRT問(wèn)題解決匯總(不斷更新)
    2009-05-13 17:01 | 導(dǎo)導(dǎo)
    你叫謝星星?  回復(fù)  更多評(píng)論
      
    # re: Eclipse BIRT問(wèn)題解決匯總(不斷更新)[未登錄]
    2009-05-21 14:13 | 1
    好像不對(duì)啊
    報(bào)錯(cuò)
    我最近才開始學(xué)習(xí)birt  回復(fù)  更多評(píng)論
      
    # re: Eclipse BIRT問(wèn)題解決匯總(不斷更新)
    2009-06-02 09:34 | sgwood
    還有個(gè)close方法沒寫  回復(fù)  更多評(píng)論
      
    # re: Eclipse BIRT問(wèn)題解決匯總(不斷更新)[未登錄]
    2009-09-03 10:20 | Glen
    支持 條理清晣的詳盡實(shí)用教學(xué)。  回復(fù)  更多評(píng)論
      
    # re: Eclipse BIRT問(wèn)題解決匯總(不斷更新)[未登錄]
    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




      回復(fù)  更多評(píng)論
      
    # re: Eclipse BIRT問(wèn)題解決匯總(不斷更新)
    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; 這里少?gòu)?fù)制了一句return false; 結(jié)果 總是報(bào)錯(cuò). 不清楚是什么原因. 因?yàn)閯倓偨佑|birt. 不了解script數(shù)據(jù)庫(kù) 所以耽誤了很多時(shí)間... 希望大家引以為戒.
    當(dāng)前報(bào)表的script的下拉close事件里面 加上cf = null; c = null;
      回復(fù)  更多評(píng)論
      
    # re: Eclipse BIRT問(wèn)題解決匯總(不斷更新)
    2013-06-25 18:47 | 路過(guò)
    試過(guò)了,我這兩天開始學(xué)的,看到這個(gè)初學(xué)不錯(cuò)。但是有些問(wèn)題里面
    我用的事4.2版本
    1)需要把java工程下的那個(gè)編譯好的包c(diǎn)opy到eclipse下的plugins\org.eclipse.birt.report.viewer_4.2.2.v201302041142\birt\WEB-INF\classes下面,否側(cè)是報(bào)表時(shí)會(huì)報(bào)錯(cuò)誤的。
    2)按地址分組時(shí)候,我按圖設(shè)置了interval,報(bào)錯(cuò)。不需要設(shè)置這項(xiàng)  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    <2009年5月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

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

          Power Designer系統(tǒng)分析與建模實(shí)戰(zhàn)  (2015年7月出版)
          
         Struts2+Hibernate3+Spring2   (2010年5月出版)
         

    留言簿(263)

    隨筆分類

    隨筆檔案

    文章分類

    相冊(cè)

    關(guān)注blog

    積分與排名

    • 積分 - 2294312
    • 排名 - 3

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲第一视频网站| 免费一级毛片在线播放视频免费观看永久 | 亚洲香蕉久久一区二区| 成年女人18级毛片毛片免费| 一级毛片无遮挡免费全部| 91亚洲一区二区在线观看不卡| 午夜免费不卡毛片完整版| 伊人免费在线观看| 亚洲国产精品无码久久98| 亚洲国产精品SSS在线观看AV| 日韩av无码成人无码免费| 国产特黄特色的大片观看免费视频 | 91精品国产免费久久国语蜜臀| 亚洲国产成人AV在线播放| 亚洲国产精品一区二区第一页 | 777亚洲精品乱码久久久久久| 尤物永久免费AV无码网站| 国产一区二区三区免费观看在线| 亚洲天堂男人影院| 久久精品7亚洲午夜a| 国产网站免费观看| h视频在线观看免费完整版| 一级毛片a免费播放王色电影| 亚洲成人黄色网址| 亚洲日本一区二区三区在线| 免费高清av一区二区三区| 日韩精品在线免费观看| 免费人成动漫在线播放r18| 亚洲一区电影在线观看| 国产av天堂亚洲国产av天堂 | 国产精品亚洲аv无码播放| 又黄又爽的视频免费看| 在线观看的免费网站| 免费精品一区二区三区第35| 免费国产高清毛不卡片基地| 四虎亚洲精品高清在线观看| 亚洲狠狠久久综合一区77777| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 久久久久国色AV免费观看性色| 久久国产精品2020免费m3u8| eeuss在线兵区免费观看|