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

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

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

    report9d

    2008年5月29日 #

    特大喜訊: 簡(jiǎn)表(JOR),國(guó)內(nèi)唯一開(kāi)源的java報(bào)表工具隆重啟航!

    簡(jiǎn)表(JOR),是一款開(kāi)源的報(bào)表工具,完全java實(shí)現(xiàn),核心代碼來(lái)自于國(guó)內(nèi)一線報(bào)表工具品牌杰表.2008 。

    提起開(kāi)源的報(bào)表工具,不能不說(shuō)說(shuō)jaspereport,jasperreport作為著名的開(kāi)源報(bào)表工具,在java程序員中一直享有盛名。但由于其設(shè)計(jì)主要是針對(duì)西式的簡(jiǎn)單報(bào)表,設(shè)計(jì)起復(fù)雜的中式報(bào)表來(lái),有點(diǎn)力不從心,所以,在國(guó)內(nèi)的項(xiàng)目中能成功應(yīng)用的例子并不多。JOR,作為能做復(fù)雜報(bào)表的開(kāi)源報(bào)表工具,可以彌補(bǔ)jasperreport的不足。

    下載地址:

    http://www.jatools.com/jor

    posted @ 2009-10-15 16:09 report9d 閱讀(343) | 評(píng)論 (0)編輯 收藏

    原創(chuàng)olap引擎,純java實(shí)現(xiàn)的

    java實(shí)現(xiàn)的olap服務(wù)器,完全自主產(chǎn)權(quán),純java實(shí)現(xiàn). cube架構(gòu),性能優(yōu),占用空間小.


     

    分析模型設(shè)計(jì)器

     


    posted @ 2009-09-25 18:47 report9d 閱讀(372) | 評(píng)論 (0)編輯 收藏

    換個(gè)角度來(lái)曬曬杰表.2008

    閑話少說(shuō),曬幾個(gè)杰表.2008的ppt截圖,希望有助于大家對(duì)報(bào)表工具的選擇.













     


    posted @ 2009-09-02 13:02 report9d 閱讀(952) | 評(píng)論 (0)編輯 收藏

    jni 學(xué)習(xí)筆記一(原創(chuàng))

    jni 類型

    簡(jiǎn)單類型 primitive type

    jni有8大基本類型, jboolean,jbyte,jchar,jshort,jint,jfloat,jlong,,jdouble
    8位,16位,32位,64位,各兩個(gè)(在win32平臺(tái)中,其他平臺(tái)不一定)

    java類型與c++數(shù)據(jù)類型的映射關(guān)系是如下:
    jboolean <--> unsigned char
    jchar   <--> unsigned short
    jshort  <--> short
    jfloat  <-->  float
    jdouble <--> double

    這是在 jni.h里定義的,為啥缺了jbyte,jint,jlong的映射呢?
    答案是:sun在實(shí)現(xiàn)java虛擬機(jī)時(shí),考慮到虛擬機(jī)可能運(yùn)行在不同的操作系統(tǒng)和不同的硬件平臺(tái)上,比如,硬件平臺(tái)有8位,16位,32位,64位的區(qū)別,為了更好地與硬件平臺(tái)匹配,發(fā)揮最好的性能,將一些類型抽取出來(lái),允許在不同的平臺(tái)上有不同的表示(位數(shù)),我們姑且稱之為硬件相關(guān)類型,jbyte,jint,jlong就屬于硬件相關(guān)類型。

    舉列來(lái)說(shuō),如果你在32位機(jī)上,jint表示的是32bit的,而在64位機(jī)上,一般是64位即8個(gè)字節(jié)表示,也就是說(shuō),jbyte,jint,jlong在sun的虛擬機(jī)上,位數(shù)是不定的。

    那位數(shù)不一定,怎么編譯?   sun的方法是增加一個(gè)機(jī)器相關(guān)的jni_md.h文件,這里的md是machine dependent(機(jī)器相關(guān))的意思。在win32平臺(tái)中,這三個(gè)類型的定義如下:

    typedef long jint;
    typedef __int64 jlong;
    typedef signed char jbyte;

    由此可見(jiàn),在win32平臺(tái)中,jint是32位的,jlong是64位,jbyte是8位的.

    指針類型  reference type
    reference 準(zhǔn)確的譯法,應(yīng)該是引用,但引用實(shí)際上就是指針的一種偽裝,只不過(guò)更接近人的思維罷了。如果說(shuō),"爸爸的爸爸"是一種指針概念,那"爺爺"就是一種引用概念。

    jni把類型分為兩大類,一個(gè)是簡(jiǎn)單類型,一個(gè)是引用類型,下面是引用類型



    從上圖似乎可以看出,所有引用類型,都從jobject 繼承,jarray又被幾個(gè)簡(jiǎn)單類型的數(shù)組繼承.
    但實(shí)際上這個(gè)對(duì)象層次,是一種假象,跟我們c++與java中看到的對(duì)象層次是有區(qū)別的,jobject與LPSTR(字符串指針),本質(zhì)上沒(méi)有區(qū)別:
    1.  jobject, jclass,jstring,...等,所有對(duì)象,是指針,不是對(duì)象本身,而指針是不存在繼承關(guān)系的,“小狗”的指針,從“動(dòng)物”的指針繼承,這種說(shuō)法不成立。
    2. jobject,jclass,jstring 是一種指針,不存在任何操作方法,好比你不能 LPCSTR->strlen(),在jni中,也沒(méi)有提供任何  jobject->something() 這種調(diào)用。
    3. 對(duì)這些對(duì)象的操作必須依賴于 env對(duì)象的操作方法.

    看一下,jni.h中對(duì) 這些引用對(duì)象的定義

    class _jobject {};
    class _jclass : public _jobject {};
    class _jstring : public _jobject {};
    ...
    typedef _jobject *jobject;     //_jobject才是類定義,jobject 是否_jobject的指針
    typedef _jclass *jclass;
    typedef _jstring *jstring;
    ...

    在這些下劃線對(duì)象中,有什么成員變量,成員函數(shù)呢? 答案是你什么也不能得到,比如,你想知道,_jstring對(duì)象的字符串長(zhǎng)度,你不能 _jstring.length(),得到,而必須env->GetStringLength(jstring) 來(lái)得到.

    只給你一個(gè)對(duì)象的指針,不告訴你里面有什么,這樣做的好處是實(shí)現(xiàn)與接口分離。

    jvalue 這個(gè)類型,是一個(gè)union ,感覺(jué)很想com里的variant對(duì)象,不過(guò)沒(méi)有指明類型的field
     typedef union jvalue {
        jboolean z;
        jbyte    b;
        jchar    c;
        jshort   s;
        jint     i;
        jlong    j;
        jfloat   f;
        jdouble  d;
        jobject  l;
    } jvalue;
    我現(xiàn)在還不知道,這個(gè)數(shù)據(jù)類型,什么時(shí)候用.

    jfieldID是一個(gè)java類成員變量的id,這個(gè)id在c++中,實(shí)際是一個(gè)指向結(jié)構(gòu)的一個(gè)指針, jmethodID  是成員方法的id,  不管是成員變量還是方法的id,在java類被加載進(jìn)虛擬機(jī)后,是保持不變的。所以從考慮性能計(jì),可以使用靜態(tài)緩存的方法,先取出來(lái),后面會(huì)講到

    字符串類型
    這里說(shuō)的字符串類型,是jni中char * 的格式,不是指 jstring/_jstring,jni也使用 char * 字符串指針,
    好下所示:
        jmethodID GetMethodID (JNIEnv *env, jclass clazz, const char *name, const char *sig);

    但需要注意的是,這里的name,必須是UTF-8的編碼,utf-8對(duì)于ascii字符,只占一個(gè)字節(jié),最多不超過(guò)3個(gè)字節(jié)

    posted @ 2009-06-22 10:12 report9d 閱讀(2277) | 評(píng)論 (1)編輯 收藏

    java報(bào)表圖例大全

    通過(guò)圖片介紹java報(bào)表開(kāi)發(fā)過(guò)程中,經(jīng)常遇到的一些報(bào)表類型,統(tǒng)計(jì)圖,及可視化的設(shè)計(jì)等.下面以 杰表.2008 為例介紹之.

     

    一、支持報(bào)表類型

    主從報(bào)表

    套打報(bào)表

    標(biāo)簽報(bào)表

    分欄報(bào)表

    計(jì)算比去年增長(zhǎng)數(shù)

    計(jì)算比去年同期增長(zhǎng)數(shù)

    補(bǔ)足空行的表格報(bào)表

    多表合并.不同的數(shù)據(jù)集,做成一個(gè)相連的報(bào)表.

    公式分組報(bào)表.按字段值,進(jìn)行分類,分級(jí)

    排行榜(Top N)報(bào)表

    按匯總值大小排序的分組

    多級(jí)分組

    計(jì)算占比

    顯示排名

    交叉表折頁(yè)處理



    層次不等的交叉表

    行列并行分組的交叉表

    多數(shù)據(jù)集的交叉表

    靜態(tài)表格中的公式計(jì)算

     

    二、javabean數(shù)據(jù)源

    使用java數(shù)組

    假設(shè)項(xiàng)目組其他成員已經(jīng)編寫(xiě)了一個(gè)Student類,如下圖(a),該類定義四個(gè)方法,分別獲取其姓名,年齡,性別,分?jǐn)?shù)。由腳本構(gòu)造一個(gè)包含三個(gè)Student對(duì)象的數(shù)組,如圖(b),要求你做成下圖(c)所示報(bào)表。

    嵌套的java對(duì)象數(shù)據(jù)源

    假設(shè)你有下圖(a)所示的兩個(gè)類Student和Person,你可以使用Student的getMembers()方法,取得該學(xué)生的家庭成員列表,每個(gè)家庭成員用一個(gè)Person對(duì)象表示,該對(duì)象包含與該學(xué)生的關(guān)系、姓名、性別等信息。

    ResultSet數(shù)據(jù)源

    指定sql查詢一個(gè)報(bào)表


    三、統(tǒng)計(jì)圖與條碼

    插入統(tǒng)計(jì)圖對(duì)象

    設(shè)置統(tǒng)計(jì)圖背景及立體效果

    設(shè)置統(tǒng)計(jì)圖輸出格式為Flash

    從統(tǒng)計(jì)圖鉆取另一個(gè)明細(xì)報(bào)表

    你可以在統(tǒng)計(jì)圖的某一個(gè)數(shù)據(jù)區(qū)放置一個(gè)超鏈接,使用戶雙擊該區(qū)時(shí),跳轉(zhuǎn)到另一個(gè)子報(bào)表或網(wǎng)頁(yè),如,有一個(gè)柱形圖,顯示各產(chǎn)品的庫(kù)存量,點(diǎn)擊某個(gè)產(chǎn)品的柱面,就可以打開(kāi)該產(chǎn)品相關(guān)的銷售記錄。

    餅圖

    以時(shí)間為橫軸的統(tǒng)計(jì)圖

    混合類型統(tǒng)計(jì)圖

    雙軸統(tǒng)計(jì)圖

    創(chuàng)建甘特圖

    特殊統(tǒng)計(jì)圖








    創(chuàng)建條形碼對(duì)象

    日常生活中條形碼隨處可見(jiàn),條形碼用幾何圖形表示數(shù)據(jù),并可以被專門設(shè)備識(shí)別。杰表可支持的13種條形碼,分別是codabar、code39、code128、2of5、postnet、ean-128、ean-13、ean-8、upc-a、upc-e、royal-mail-cbc、pdf417、datamatrix,其中最后兩種是二維條形碼。

    一維碼   二維碼  

    設(shè)置圖片背景

    顯示數(shù)據(jù)庫(kù)字段上的圖片


    三、特殊的報(bào)表效果

    凍結(jié)窗口效果

    點(diǎn)擊表頭排序

    使用超鏈接子報(bào)表

    當(dāng)你瀏覽報(bào)表時(shí),可能需要了解更詳細(xì)的信息,比如,我們?cè)跒g覽一個(gè)訂單列表時(shí),希望了解該訂單中各貨物的銷售數(shù)量。這時(shí),你可以在訂單列表中,加一個(gè)超鏈接,使用戶在點(diǎn)擊該鏈接后,可以跳轉(zhuǎn)到顯示該訂單明細(xì)的一個(gè)報(bào)表。
    你可以在主表中,點(diǎn)擊訂單ID,即可瀏覽該訂單出售的所有貨物明細(xì),如下圖所示:

    熱點(diǎn)提示

    復(fù)雜匯總

    顏色警告

    斑馬條

    創(chuàng)建頁(yè)小計(jì)、頁(yè)累計(jì)報(bào)表

     

    四、可視化設(shè)計(jì)器

    設(shè)計(jì)參數(shù)表單

    杰表.2008配備了一個(gè)可視化參數(shù)表單設(shè)計(jì)器,使用這個(gè)設(shè)計(jì)器,你可以不離開(kāi)報(bào)表設(shè)計(jì)器環(huán)境,輕松制作查詢表單。表單設(shè)計(jì)器有豐富的web控件,檢驗(yàn),事件偵聽(tīng),css樣式機(jī)制,你也可以使用javascript腳本擴(kuò)展表單功能,同時(shí),也實(shí)現(xiàn)了常用的多個(gè)下拉框聯(lián)動(dòng)功能。

    可視化的報(bào)表設(shè)計(jì)器

    報(bào)表預(yù)覽面板

     

    posted @ 2009-03-04 17:58 report9d 閱讀(5867) | 評(píng)論 (5)編輯 收藏

    Java報(bào)表工具打印方案集錦

    本文試圖對(duì)市面上流行的純java實(shí)現(xiàn)的web報(bào)表工具,jasperreport 、 stylereport 、杰表、潤(rùn)乾報(bào)表、快逸、finererport為例,分析各報(bào)表工具采用的web打印技術(shù)的異同、優(yōu)劣、及對(duì)用戶需求的適應(yīng)性,供大家參考。

    打印是報(bào)表工具的基本功能之一,有些報(bào)表工具就是從一個(gè)專門的打印程序中發(fā)展而來(lái),如用友華表。因?yàn)橄氘?dāng)然地簡(jiǎn)單,所以,在報(bào)表工具選型時(shí)用戶常常忽略這個(gè)問(wèn)題,特別是有些報(bào)表工具廠商,明知自己的打印方案在滿足某些需求時(shí),存在缺陷,但沒(méi)有盡明確告知義務(wù),而故意事先做好花里胡哨的有關(guān)打印方面的文檔,欺騙客戶。我曾不至一次地聽(tīng)說(shuō),有些開(kāi)發(fā)商選用的報(bào)表工具,其打印功能不能滿足需求,不得不另外找打印工具的事情,實(shí)在是吃盡苦頭。

    報(bào)表打印在c/s時(shí)代,確實(shí)非常簡(jiǎn)單,vb,vc,Delphi,pb,都有很好用的打印api,有的甚至用報(bào)表控件方式,搞定打印更是分分秒的事情,但今天是b/s的天下,報(bào)表都是在網(wǎng)頁(yè)瀏覽器中顯示,但當(dāng)今的瀏覽器打印功能一般非常弱(誰(shuí)讓你叫他“瀏覽”器呢?“瀏覽”就是讓你用眼睛看,“打印”屬于兼職),要做到精確分頁(yè)打印,幾乎不可能,所以當(dāng)前的報(bào)表工具,一般不會(huì)讓你使用瀏覽器的打印菜單來(lái)打印報(bào)表,都有自己的解決方案,這下可好,各報(bào)表工具廠商由是乎,八仙過(guò)海,各顯神通,各家都說(shuō)自己的好,對(duì)于web打印了解不深的客戶,總有霧里看花的感覺(jué)。

    歸納來(lái)說(shuō),當(dāng)今java報(bào)表工具采用的打印技術(shù)不外乎三類:Applet打印、導(dǎo)出成pdf/excel打印、控件打印。用戶選用的重點(diǎn)是:盡量選擇插件小的打印軟件,因?yàn)槲募∫馕吨惭b迅速,啟動(dòng)速度快。插件大小除了插件本身的大小外,還需要考慮支持軟件的大小,如有些插件很小,支持軟件卻很大。

    Applet打印

    本文開(kāi)始處提及的報(bào)表工具,除finereport外都支持Applet打印。之所以多數(shù)廠商支持Applet方式打印,因?yàn)?/span>Appletjava實(shí)現(xiàn),與java后臺(tái)、java報(bào)表設(shè)計(jì)器的兼容性較好,代碼容易維護(hù),實(shí)現(xiàn)也方便。然而,廠商省事,用戶就得多事。Applet方式打印,用戶最多的抱怨是需要安裝jre(而當(dāng)前的操作系統(tǒng),一般不是默認(rèn)安裝的),雖然說(shuō),多數(shù)廠商已經(jīng)做到可以自動(dòng)安裝jre,但對(duì)于10M(JRE1.415MJRE1.516M))的安裝,這意味著用戶需要較長(zhǎng)時(shí)間的等待。

    另一個(gè)問(wèn)題是Applet配置復(fù)雜,使用不穩(wěn)定。1995年,正是因?yàn)榻o人們無(wú)窮的視覺(jué)和腦力震蕩的Applet ,使人們認(rèn)識(shí)了java,認(rèn)識(shí)了Games Gosling。所以在b/s早期,人們?yōu)榱苏宫F(xiàn)html的富客戶效果,Applet是唯一之選。但現(xiàn)如今,Applet已經(jīng)是昨日黃花,早已被ajaxflex取代,是什么原因?戰(zhàn)略層面的東西,我也不太說(shuō)得清楚,但作為程序員,經(jīng)過(guò)幾番折騰后,也不會(huì)愿意再用Applet了。如經(jīng)常莫名其妙地出現(xiàn)“小應(yīng)用程序,… notinited”的錯(cuò)誤,還得清理ie緩存,對(duì)于Applet打印,還需要設(shè)置jre的安全策略等等。不是靠終端用戶能完成的,這就必須額外地增加開(kāi)發(fā)商的服務(wù)成本。

    Applet打印,啟動(dòng)速度慢。Applet打印原理是,當(dāng)你點(diǎn)擊打印按鈕時(shí),瀏覽器啟動(dòng)AppletApplet根據(jù)參數(shù)訪問(wèn)后臺(tái)頁(yè)面信息,后臺(tái)返回頁(yè)面,Applet加載頁(yè)面后,調(diào)用jre的打印服務(wù)進(jìn)行打印。這就意味著,每次打印都需要調(diào)用后臺(tái)服務(wù)程序,就必然影響打印的響應(yīng)速度。

    Applet打印很安全,言下之意是ActiveX打印不安全,這是采用Applet打印的廠商津津樂(lè)道的,實(shí)際上,這是一個(gè)偽命題。AppletActiveX都是瀏覽器的插件,我們當(dāng)然不希望下載插件后,該插件可以為所欲為,比如,刪除你磁盤里的文件,或啟動(dòng)一個(gè)木馬,從這點(diǎn)來(lái)說(shuō),Applet確實(shí)比ActiveX安全,因?yàn)?/span>Applet是在一個(gè)受限的環(huán)境里運(yùn)行,而ActiveX是不受限的。所以,當(dāng)你訪問(wèn)一個(gè)陌生的網(wǎng)站時(shí),出于安全考慮,你可能會(huì)允許下載運(yùn)行Applet,而阻止ActiveX。但當(dāng)用戶訪問(wèn)自己的網(wǎng)站系統(tǒng),時(shí),這種擔(dān)心就沒(méi)必要,這好比,當(dāng)你與陌生人打交道時(shí),很自然地會(huì)問(wèn)自己,這人可信嘛?但如果你與家里人打交道,這個(gè)問(wèn)題就不成其為問(wèn)題了。

    Applet打印,除了可以設(shè)置打印機(jī),設(shè)置紙張頁(yè)面大小等常規(guī)打印功能外,往往也集成與打印不相關(guān)的功能,比如,打印前修改(有人說(shuō),是為了做假帳方便,中國(guó)特色,國(guó)產(chǎn)報(bào)表工具一般都具備,jasperreport,stylereport不支持),按行分頁(yè),自由定位,這些本來(lái)由設(shè)計(jì)器完成的功能,挪到打印功能上來(lái),來(lái)掩蓋上面指出的Applet的種種不足。實(shí)際上,Applet功能強(qiáng)弱完全取決于Applet的大小,有些報(bào)表廠商甚至用Appletweb start 的方式,提供所謂的基于web的報(bào)表設(shè)計(jì),前提是下載 40Mjar包,實(shí)際上,這種方案遠(yuǎn)非一般意義上的純web 的報(bào)表設(shè)計(jì),完全是混淆概念。作為用戶最希望常規(guī)的,他們熟悉的打印功能,不需要不相關(guān)的,理解困難的打印功能。

    PDF/EXCEL打印

    Pdf打印方式,就是用戶點(diǎn)擊打印后,瀏覽器會(huì)自動(dòng)彈出adobe reader,再利用adobe的打印按鈕進(jìn)行打印,由于國(guó)外adobe reader安裝非常普及,國(guó)外的java報(bào)表工具多提供這種打印方案,比如 stylereportjasperreport,國(guó)內(nèi)報(bào)表工具finereport也采用這種方式(讓人不解)pdf方式打印的好處是能做到精確打印,而且報(bào)表預(yù)覽與打印一氣呵成。但不足是需要在客戶的機(jī)子里,事先安裝有adobe reader,作為程序員,一般不太會(huì)有問(wèn)題,因?yàn)槌绦騿T可能經(jīng)常要瀏覽一些pdf文檔,多數(shù)已經(jīng)裝了adobe reader,但國(guó)內(nèi)的終端用戶,大多不知pdf是何物,更談不上安裝。

    Pdf打印的另一個(gè)問(wèn)題是必須彈出adobe reader,不能做到無(wú)預(yù)覽打印,這可能由于pdf缺少相應(yīng)api的緣故吧。

    輕量級(jí)的ActiveX打印

    這里之所以強(qiáng)調(diào)“輕量級(jí)”,目的是與傳統(tǒng)意義上的ActiveX報(bào)表相區(qū)別。ActiveX技術(shù)可以說(shuō)是報(bào)表工具家族里的沒(méi)落貴族,c/s時(shí)代,報(bào)表工具一般都被做成控件形式,水晶報(bào)表就是如此,在b/s時(shí)代,報(bào)表工具里仍然能看到ActiveX的身影,但風(fēng)光大不如從前,如數(shù)巨,明宇,用友華表,inforeport。用ActiveX實(shí)現(xiàn)報(bào)表的不足,在網(wǎng)上你能輕易找到,在此不再詳述。ActiveX 報(bào)表雖深受詬責(zé),但從打印功能來(lái)說(shuō),卻都是近乎完美,處理得卻非常好,非常穩(wěn)定。

    既然,ActiveX打印是長(zhǎng)處,能不能揚(yáng)長(zhǎng)避短地使用ActiveX技術(shù)?有人提出這樣的問(wèn)題。于是,有些廠商,比如杰表,采用了瀏覽時(shí)用html,打印時(shí)用插件的方式。這種方案的需要解決的問(wèn)題是,ActiveX打印控件,不能太大,否則報(bào)表工具成了ActiveX報(bào)表了。

    Applet相比,輕量級(jí)ActiveX打印具有以下優(yōu)勢(shì):

    1.       下載時(shí)間短,(大小是Applet1/250);

    2.       本地打印,打印時(shí),不需要訪問(wèn)后臺(tái)服務(wù)程序,不占用服務(wù)器資源;

    3.       啟動(dòng)速度快,由于控件小,且本地打印,所以打印速度是優(yōu)于以上兩中打印方案,打印速度與你點(diǎn)擊瀏覽器打印菜單相差無(wú)幾。

    采用輕量級(jí)的ActiveX打印的不足是,只有ie 5.5 及以上版本支持,其他版本的瀏覽器不支持。好在ie5.5瀏覽器已非常普及,在用戶那里應(yīng)該不是大問(wèn)題。

    杰表采用的打印方案,用一個(gè)jatoolsPrinter的控件,大小是60k,是經(jīng)過(guò)數(shù)字簽名的。這個(gè)打印控件采用ie特有的打印技術(shù)(templateprinter)實(shí)現(xiàn)打印功能,支持打印,預(yù)覽,邊距設(shè)置,重復(fù)打印,批量打印功能。

    目前,jatoolsPrinter已經(jīng)從杰表中獨(dú)立出來(lái),任何報(bào)表工具或第三方軟件都利用該控件,實(shí)現(xiàn)web打印,推出至今,免費(fèi)加收費(fèi)用戶上萬(wàn)。

    下表總結(jié)三種方式的采用者及優(yōu)劣對(duì)比,對(duì)于ie5.5客戶來(lái)說(shuō),我們推薦使用ActiveX打印方案.

    報(bào)表廠商列表

    jasperreport 
     

    Stylereport 

    杰表 

    潤(rùn)乾 

    快逸 

    finererport 

    posted @ 2008-08-08 15:52 report9d 閱讀(4558) | 評(píng)論 (0)編輯 收藏

    java報(bào)表工具中,如何可視化地設(shè)計(jì)報(bào)表參數(shù)表單

    當(dāng)我們使用報(bào)表工具,設(shè)計(jì)完一張報(bào)表時(shí),我們同時(shí)必須為該報(bào)表設(shè)計(jì)一個(gè)查詢條件表單,使得用戶在瀏覽報(bào)表時(shí),可以在網(wǎng)頁(yè)中選取查詢條件。在過(guò)去,設(shè)計(jì)表單是件令人沮喪的事情,這不僅要求你在報(bào)表設(shè)計(jì)器與開(kāi)發(fā)環(huán)境之間來(lái)回切換,而且在設(shè)計(jì)表單時(shí),還需要考慮系統(tǒng)的其他布局元素的關(guān)系,苦燥,繁瑣,沒(méi)有挑戰(zhàn)性。更進(jìn)一步,如果項(xiàng)目要求最終用戶能夠自己設(shè)計(jì)報(bào)表,天吶,他們可能喜歡用報(bào)表設(shè)計(jì)工具來(lái)設(shè)計(jì)報(bào)表,但絕對(duì)不愿意用網(wǎng)頁(yè)設(shè)計(jì)工具來(lái)設(shè)計(jì)表單。

    當(dāng)然,也有一些報(bào)表工具,實(shí)現(xiàn)了參數(shù)表單的自動(dòng)化,比如,按一定規(guī)則順序排列參數(shù)項(xiàng),但這種自動(dòng)化,用戶很難按其需求進(jìn)行排版布局,所以不能徹底解決用戶的問(wèn)題。

    現(xiàn)在,杰表.2008配備了一個(gè)可視化參數(shù)表單設(shè)計(jì)器,使用這個(gè)設(shè)計(jì)器,你可以不離開(kāi)報(bào)表設(shè)計(jì)器環(huán)境,輕松制作查詢表單。表單設(shè)計(jì)器有豐富的web控件,檢驗(yàn),事件偵聽(tīng),css樣式機(jī)制,你也可以使用javascript腳本擴(kuò)展表單功能,同時(shí),也實(shí)現(xiàn)了常用的多個(gè)下拉框聯(lián)動(dòng)功能。

    杰表.2008表單設(shè)計(jì)器不僅是表單設(shè)計(jì)工具的替代品,更重要的是表單設(shè)計(jì)器解決了報(bào)表設(shè)計(jì)容易,部署難的問(wèn)題。我們希望,利用集成的表單設(shè)計(jì)器,你只要在設(shè)計(jì)器中設(shè)計(jì)好參數(shù)表單,并將報(bào)表模板文件和表單模板文件置于某個(gè)位置,你的用戶就可以在瀏覽器中,按條件瀏覽這張報(bào)表了,這中間不需要你再做任何其他事情。

    有關(guān)表單設(shè)計(jì)的更多內(nèi)容,點(diǎn)擊這里



    posted @ 2008-07-29 12:09 report9d 閱讀(581) | 評(píng)論 (0)編輯 收藏

    java復(fù)雜報(bào)表模型與實(shí)現(xiàn)方法

    作為java程序員,大家可能都聽(tīng)說(shuō)過(guò),或用過(guò)birt, 據(jù)說(shuō),現(xiàn)在birt的東家actual,正式入駐中國(guó)市場(chǎng),聯(lián)想到前些天杰表.2008的推出,今年,注定是國(guó)內(nèi)的報(bào)表軟件市場(chǎng)不平靜的一年。

    birt的最大好處是開(kāi)源,不足是水土不服,做起復(fù)雜報(bào)表來(lái)不方便,復(fù)雜報(bào)表主要說(shuō)的是行上,列上有多個(gè)并列分組的交叉報(bào)表,國(guó)產(chǎn)報(bào)表工具大都關(guān)注復(fù)雜報(bào)表需求,而洋品牌的報(bào)表軟件工具,如jasperreport,crystalreport,這方面關(guān)注不夠,所以做起復(fù)雜報(bào)表來(lái)很吃力。

    做什么事情必須先有觀念,然后,付諸實(shí)現(xiàn),做軟件則更進(jìn)一步,必須將這些觀念結(jié)構(gòu)化,即模型化。對(duì)復(fù)雜報(bào)表需求的處理,國(guó)內(nèi)報(bào)表軟件廠商時(shí)下,用得最多的是類excel報(bào)表模型,即以單元格為中心報(bào)表模型,最早產(chǎn)品化的,是用友華表,當(dāng)然它不屬于java陣營(yíng)的,java陣營(yíng)的現(xiàn)在有潤(rùn)乾,finereport,杰表4.0,類excel報(bào)表模型大家都覺(jué)得,功能很強(qiáng),但最大問(wèn)題是,學(xué)習(xí)起來(lái)不方便,不知道你在大學(xué)里,微積分考多少,如果你90分以下,那你最好別碰那東西。

    杰表.2008采用的復(fù)雜報(bào)表模型,相對(duì)來(lái)說(shuō),比excel模型容易得多,比如下圖是一個(gè)典型的復(fù)雜報(bào)表,該報(bào)表用于按不同分類方法統(tǒng)計(jì)培訓(xùn)學(xué)員人數(shù),該表列上存在多個(gè)分組(培訓(xùn)類型、累計(jì)培訓(xùn)時(shí)間、參加培訓(xùn)總?cè)藬?shù)、培訓(xùn)內(nèi)容、渠道類型),分組之間不存在嵌套關(guān)系的,即分組是并列的。行上存在一個(gè)按學(xué)員行政級(jí)別為依據(jù)的分組。


    復(fù)雜報(bào)表的復(fù)雜性在于結(jié)構(gòu)復(fù)雜,比如上圖報(bào)表列上存在多個(gè)并列分組,不僅如此,行上也可能存在多個(gè)并行分組;不僅有多個(gè)并列分組,也可能各并列分組的嵌套數(shù)不一樣;不僅各個(gè)分組來(lái)源于同一個(gè)數(shù)據(jù)集,也可能來(lái)自多個(gè)不同的數(shù)據(jù)集。

    盡管如此,我們?nèi)匀豢梢园褟?fù)雜的交叉報(bào)表,看作下圖所示的結(jié)構(gòu),表格包括A,B,C,D四部分,其中B,C是兩個(gè)表格,決定了交叉表的結(jié)構(gòu)。B表格非常特殊,第一,該表格向右生長(zhǎng)的,而一般我們常見(jiàn)向下生長(zhǎng),如C 表格。第二,該表格有多個(gè)并列分組,而一般報(bào)表工具中,表格對(duì)象最外圍只能有一個(gè)分組,盡管其嵌套數(shù)是可以多重的。


    杰表.2008以上述結(jié)構(gòu)分析為基礎(chǔ),引入了超級(jí)表格對(duì)象,該對(duì)象就是通過(guò)嵌入兩個(gè)擴(kuò)展方向不同的子表格,行頭表和列頭表,來(lái)完成交叉報(bào)表的結(jié)構(gòu)性問(wèn)題。兩表均可以有任意多的并列分組,每個(gè)分組可以有層次不同的嵌套。下圖(a)是設(shè)計(jì)面板中的超級(jí)表格對(duì)象,下圖(b)是該對(duì)象子部件的層次關(guān)系,其中對(duì)象3就是行頭表,對(duì)象4就是列頭表。


    杰表的超級(jí)表格對(duì)象結(jié)合杰表的DOM報(bào)表數(shù)據(jù)模型,可以演化出任意復(fù)雜的多源,多組交叉表,下面試舉幾例說(shuō)明之。(點(diǎn)擊進(jìn)入查看)

    列上并行分組交叉表
      層次不等的交叉表
      行列并行分組的交叉表
      多數(shù)據(jù)集的交叉表
      計(jì)算比去年增長(zhǎng)數(shù)
      計(jì)算比去年同期增長(zhǎng)數(shù)
      計(jì)算占比
      顯示排名
      按照匯總值排序的交叉報(bào)表
      交叉表折頁(yè)處理
      交叉表居中

    posted @ 2008-06-10 16:15 report9d 閱讀(3027) | 評(píng)論 (0)編輯 收藏

    使用java對(duì)象作報(bào)表數(shù)據(jù)源

    一般java報(bào)表工具,允許用戶使用java類來(lái)作動(dòng)態(tài)數(shù)據(jù)來(lái)源,但這個(gè)類必須符合工具要求的接口,如JasperReport的JRDataSource接口,杰表的BeanDataset接口。這種方式確實(shí)為用戶提供了一種在報(bào)表工具中使用java對(duì)象的途徑,但同時(shí),因?yàn)樾枰獙?shí)現(xiàn)特定接口,額外地增加了編碼工作。

    有沒(méi)有一種不需要實(shí)現(xiàn)接口直接使用java對(duì)象的辦法呢?杰表.2008提供了這樣的方法。

    假設(shè)你有下圖(a)所示的兩個(gè)類Student和Person,你可以使用Student的getMembers()方法,取得該學(xué)生的家庭成員列表,每個(gè)家庭成員用一個(gè)Person對(duì)象表示,該對(duì)象包含與該學(xué)生的關(guān)系,姓名,性別等信息。注意,這兩個(gè)類沒(méi)有實(shí)現(xiàn)任何額外的接口。


    如果你有一個(gè)Student對(duì)象,那么,在杰表.2008中,你就可以做成如上圖(b)所示報(bào)表,上半部分列出該學(xué)生的本人信息,下面顯示該學(xué)生的家庭成員表。更多內(nèi)容請(qǐng)參照:

    使用java對(duì)象作數(shù)據(jù)源 
    使用java數(shù)組 
    java數(shù)組節(jié)點(diǎn)訪問(wèn) 
    List,iterator數(shù)據(jù)源 
    嵌套的java對(duì)象數(shù)據(jù)源 
    ResultSet數(shù)據(jù)源 
    TableModel數(shù)據(jù)源
     

    posted @ 2008-05-29 10:07 report9d 閱讀(331) | 評(píng)論 (0)編輯 收藏

    主站蜘蛛池模板: 99久久99久久精品免费看蜜桃| 亚洲综合视频在线| 免费看黄视频网站| 色www永久免费网站| 国产精品成人亚洲| 亚洲国产精品一区二区三区在线观看 | 足恋玩丝袜脚视频免费网站| 无码AV动漫精品一区二区免费 | 四虎永久在线精品免费网址| 男人都懂www深夜免费网站| 一本一道dvd在线观看免费视频| 亚洲中文字幕无码av永久| 亚洲黄色在线观看| 国产亚洲欧洲Aⅴ综合一区| 日韩在线看片免费人成视频播放| 99在线精品免费视频九九视| 无码专区AAAAAA免费视频| 中文字幕在线免费视频| 永久免费无码网站在线观看个| 国产精品无码亚洲一区二区三区| 亚洲精品中文字幕无乱码麻豆| 亚洲春色另类小说| 337p日本欧洲亚洲大胆色噜噜| 亚洲v高清理论电影| 国产l精品国产亚洲区在线观看| ZZIJZZIJ亚洲日本少妇JIZJIZ| 亚洲国产成人爱av在线播放| 国产成人无码a区在线观看视频免费 | 国产在线观看免费不卡| 国产精品无码一二区免费| 日本免费无遮挡吸乳视频电影| 成年性羞羞视频免费观看无限| 亚洲人成网站免费播放| 成人黄动漫画免费网站视频| 国产精品成人免费一区二区| 久久精品无码一区二区三区免费| 97无码免费人妻超级碰碰碰碰 | 亚洲AV无码一区二区乱子仑| 亚洲av日韩综合一区二区三区| 亚洲av无码日韩av无码网站冲| 国产精品亚洲专区在线播放|