JAVA報(bào)表

          報(bào)表工具

          #

          為什么說中國式報(bào)表特殊-5.5 集成性

          還有一個(gè)和中國報(bào)表特點(diǎn)沒什么關(guān)系但是程序員常常碰到的頭痛問題,就是產(chǎn)品的集成性。

          在國內(nèi)做應(yīng)用開發(fā),報(bào)表只是應(yīng)用的一個(gè)部分而非全部,報(bào)表總是要被集成到應(yīng)用系統(tǒng)中去,如果某個(gè)報(bào)表工具能力超強(qiáng),但卻不可被集成,那也是沒意義。

          考慮到當(dāng)前國內(nèi)應(yīng)用開發(fā)的現(xiàn)狀,我們只研討基于J2EE機(jī)制下的B/S應(yīng)用的報(bào)表集成。

          現(xiàn)在流行的報(bào)表工具幾乎都是獨(dú)立服務(wù)器形式。獨(dú)立服務(wù)器的好處沒想出來,倒是覺得有很多缺點(diǎn),主要有:

          (1) ????????????? 報(bào)表服務(wù)器與應(yīng)用程序不在同一個(gè)進(jìn)程空間內(nèi),數(shù)據(jù)溝通都需要通過網(wǎng)絡(luò)協(xié)議進(jìn)行,即使是同一臺(tái)機(jī)器,也要把數(shù)據(jù)傳來傳去,浪費(fèi)時(shí)間降低性能;

          (2) ????????????? 獨(dú)立的報(bào)表服務(wù)器有自己的一套用戶權(quán)限管理機(jī)制,設(shè)計(jì)得還挺復(fù)雜。程序必須往這個(gè)規(guī)則上靠,可這套規(guī)則從來也不夠用:應(yīng)用系統(tǒng)的用戶管理沒那么規(guī)整,能乖乖地按廠家設(shè)計(jì)的樣子來(您見過這樣的系統(tǒng),把應(yīng)用系統(tǒng)中的柜員、科長、局長這種業(yè)務(wù)角色建立在ORACLE的用戶上?)。這種費(fèi)勁又嚴(yán)重影響集成度的東西其實(shí)不做也罷,常常因此浪費(fèi)很多時(shí)間還和應(yīng)用接上不。

          (3) ????????????? 獨(dú)立服務(wù)器沒法充分應(yīng)用服務(wù)器的本事,比如數(shù)據(jù)庫連接就不能和應(yīng)用系統(tǒng)的其它部分共享,集群能力,也得聽命于報(bào)表服務(wù)器。Weblogic的平衡負(fù)載能力會(huì)比報(bào)表服務(wù)器要差?

          (4) ????????????? 布署方案:所有的程序數(shù)據(jù)打個(gè)WAR包很方便就上去了,可它偏要與眾不同,要獨(dú)自搞一塊,還是沒脾氣。

          想來想去,估計(jì)美國人可能不大需要被集成的報(bào)表工具,所以老外的產(chǎn)品也不是為了被集成而設(shè)計(jì),這也就情有可愿了。可惜的是,國人抄老外時(shí)也沒怎么想想,大多把體系結(jié)構(gòu)也照抄了過來,特別是海歸派的新興企業(yè);有系統(tǒng)集成經(jīng)驗(yàn)的國產(chǎn)報(bào)表廠商就還稍好一點(diǎn),沒去費(fèi)那勁。

          posted @ 2006-12-25 09:31 java-report| 編輯 收藏

          為什么說中國式報(bào)表特殊-5.4 填報(bào)

          ??? 所謂填報(bào),顧名思義,就是填了再報(bào)。

          ??? 中國人的報(bào)表不是統(tǒng)計(jì)匯總完了,就完了的,用戶希望報(bào)表還要能填能改,改完的結(jié)果還可以再存起來(咱從小不就常常填表嗎?)。中國人天生就認(rèn)為表都是可以填的,這世上哪有不能填的表,那還叫表格嗎?

          ??? 老外是沒想過這問題的,造出來的工具統(tǒng)統(tǒng)沒有這個(gè)本事,人家覺得報(bào)表是報(bào)表,就是不可改的,填的表是另一種東西,根本不能叫報(bào)表。

          EXCEL 可以填,而且填著還方便得很(不得不再次佩服一下微軟),按照EXCEL抄的國貨統(tǒng)統(tǒng)都有填的本事。不過,話說回來,這些工具還是有上面說的問題,沒有數(shù)據(jù)模型,填完的數(shù)不知怎么寫進(jìn)數(shù)據(jù)庫,于是常常只能放進(jìn)文件中(就象EXCEL文件),需要再編程序處理。

          填報(bào)功能說起來也挺復(fù)雜的:(1)要允許表格和數(shù)據(jù)庫字段的隨意對(duì)應(yīng),可能整表一條記錄,也可能一行一條記錄,甚至可能一格一條記錄(交叉表填寫),這幾種情況還可能是組合出來的,同一張表一下子寫進(jìn)好幾個(gè)數(shù)據(jù)表;(2)填的過程中還應(yīng)當(dāng)有自動(dòng)計(jì)算能力(參考EXCEL),提交時(shí)應(yīng)當(dāng)有合法性的檢查功能,看看填的數(shù)是否合理;(3)中國要填的表經(jīng)常是一套一套的,十幾張之多,一時(shí)半會(huì)兒填不完,需要下載下來回家慢慢填或者跟其他同事商量著填,這又需要多頁填報(bào)或離線填報(bào)的功能。

          每條功能搞起來都不容易啊!參考本版:填報(bào)-Web報(bào)表工具必不可少的功能

          ?

          除此之外,中國報(bào)表還有不少折磨人的小地方,特別是在打印輸出方面,比如一張紙上打印幾個(gè)小票據(jù),橫向分欄,橫向分頁時(shí)左表頭的重復(fù),末頁補(bǔ)足空行,票據(jù)套打等等,這些比較頭痛但還不算什么根本的問題,這里就不仔細(xì)評(píng)說了。

          posted @ 2006-12-20 12:04 java-report| 編輯 收藏

          為什么說中國式報(bào)表特殊-5.3 跨行組運(yùn)算

          中國報(bào)表統(tǒng)計(jì)方面的第三個(gè)復(fù)雜點(diǎn)是格間運(yùn)算,特別是跨行組的運(yùn)算。

          要統(tǒng)計(jì)就要有運(yùn)算,所有的報(bào)表開發(fā)工具都提供了計(jì)算匯總的功能。運(yùn)算只有兩種,一種是行內(nèi)各列之間的運(yùn)算,另一種是針對(duì)某組(或全體)所有數(shù)據(jù)進(jìn)行的匯總(可能帶條件),兩種運(yùn)算可以組合。

          但是,在中國的報(bào)表中只有要時(shí)間序列的,多半就要涉及到比上期、比去年同期之類的運(yùn)算,這種運(yùn)算跨行甚至跨組了。而這種能力,咱們手上這些報(bào)表開發(fā)工具就又沒有了。其原因在于:這類工具都和數(shù)據(jù)庫的概念匹配得很好,而數(shù)據(jù)庫的行是沒有次序的,不知道誰是誰的上一行,比上期就沒法定義了,比去年同期這種跨組運(yùn)算更是想不明白了。為了解決這些問題,有些工具添加了一些引用上行或累積值的特殊函數(shù),但跨組運(yùn)算依然沒法處理,只有再寫代碼了。

          這種比較有規(guī)律的需求還不算太難辦,編程序準(zhǔn)備數(shù)據(jù)或是寫個(gè)復(fù)雜點(diǎn)的SQL語句都能處理。但中國表中常常還會(huì)有些獨(dú)立的格子,其運(yùn)算方法和誰都不相干,或是從表格中東南西北挑幾個(gè)格子加減乘除一番,或者干脆又要到數(shù)據(jù)庫中再做SELECT運(yùn)算,與其它格子之間無規(guī)律可循。這可不是在后臺(tái)寫點(diǎn)程序準(zhǔn)備好數(shù)據(jù)就完了的,需要生成完表格后,再編程序計(jì)算出這些數(shù)填進(jìn)去,這種搞法一般就得采用報(bào)表的腳本或者宿主開發(fā)語言來寫代碼了。

          這三個(gè)較大的數(shù)據(jù)統(tǒng)計(jì)問題已經(jīng)把大伙折磨得差不多吧,其它相關(guān)的還有一些次要問題,比如參數(shù)和宏的引入、交叉表的表頭向右對(duì)齊問題等等,就不細(xì)說了。

          posted @ 2006-12-15 09:47 java-report| 編輯 收藏

          為什么說中國式報(bào)表特殊-5.2 分片

          中國報(bào)表的第二個(gè)重要特征是分片,與多源相關(guān),但又不完全一樣。多源一般都會(huì)是分片的,但分片卻不一定是多源的。

          還是上面這兩個(gè)例子(見5.1 多數(shù)據(jù)源),兩個(gè)報(bào)表都很明顯地分成了兩片,每片都有自己獨(dú)立的規(guī)則,很難統(tǒng)一成一種規(guī)則處理。而我們手中的報(bào)表工具,如果不考慮采用子報(bào)表的話,都要求報(bào)表有統(tǒng)一的規(guī)則,整個(gè)報(bào)表只有一片可以重復(fù)的區(qū)域(細(xì)節(jié)區(qū)和相鄰的分組區(qū)),因?yàn)槭菃卧吹模氘?dāng)然地以為只要一片重復(fù)區(qū)就夠了,理論上就不可能做到分片規(guī)則了。

          但中國報(bào)表中分片現(xiàn)象太常見了,同一批數(shù)據(jù)也可能按不同的主題統(tǒng)計(jì)匯總,比如人事表中并列著按民族劃分再按學(xué)歷劃分。事實(shí)的情況還遠(yuǎn)不止分作兩片,常常是豎著五六片,橫著也是五六片,整個(gè)報(bào)表乘起來就有二十五六片。而且片與片之間又不是完全獨(dú)立,橫向的分片在縱向規(guī)則卻又是一致的,反之也是如此。既便想做成子表,也不大容易,每個(gè)分片的表頭都要重復(fù)編排,對(duì)齊就不說了。

          如果運(yùn)氣好,雖然分片了,但整個(gè)表的樣式看起來還是一致的(比如上面的第二個(gè)表),那還可以使出最后的殺手锏——寫代碼!

          運(yùn)氣不會(huì)時(shí)時(shí)都好,如果碰到那種上下(或左右)幾個(gè)分片中分組層數(shù)都不一樣的表,就算代碼能把數(shù)給算好,可格子卻拼不出那種上下不同的樣子,這會(huì)兒就會(huì)特別想念EXCEL了,至少樣式是可以很隨意的,寫代碼也就可以搞定了。

          具體到每個(gè)分片也不是省油的燈,不象老外弄得那么簡單,一下把所有的數(shù)都列出來,或者把所有的分組一個(gè)不落一個(gè)不重的列出來,這種搞法我們叫做“完全劃分”。對(duì)應(yīng)的就還有“不完全劃分”,也就是分組中并不是把所有出現(xiàn)的情況都列出來(這種很常見),而且還可能重復(fù)列出(這個(gè)相對(duì)少見些)。比如我們按民族劃分人員時(shí),不大可能把五十六個(gè)民族全來一遍,一般也就是列幾個(gè)大的民族再加個(gè)其它。比較典型的不完全劃分現(xiàn)象就是固定行列,無論數(shù)據(jù)庫中有多少記錄多少分組,只關(guān)心這幾種情況,表格永遠(yuǎn)只有這幾行(列)。

          老外的東西天生就是和數(shù)據(jù)庫綁定的,固定行的不是搞不出來,可又要寫代碼或者復(fù)雜的SQL去準(zhǔn)備數(shù)據(jù),象著名的資產(chǎn)負(fù)債表,用這些報(bào)表工具去做簡直就是摧殘生命。

          而且就算是會(huì)變的,這些工具也還有個(gè)行列不對(duì)稱的問題,由于和數(shù)據(jù)庫貼得太緊,大家只見過記錄數(shù)會(huì)變的數(shù)據(jù)表,都沒怎么見過字段數(shù)也會(huì)變的數(shù)據(jù)表,所以它們也就專心處理行方向的變化,拒絕去處理列數(shù)會(huì)變的表。后來總算有了一些打補(bǔ)丁的交叉表模板,能對(duì)付用著,但總是用起來不那么得心應(yīng)手,除非特別規(guī)整的交叉報(bào)表,否則這些大牌武器就又蝦米了。

          posted @ 2006-12-08 15:57 java-report| 編輯 收藏

          為什么說中國式報(bào)表特殊-5.1 多數(shù)據(jù)源

               摘要: 數(shù)據(jù)統(tǒng)計(jì)方面的問題要比報(bào)表樣式的問題多得多,也嚴(yán)重得多,要分幾個(gè)方面來研討。 中國報(bào)表統(tǒng)計(jì)方面第一個(gè)重要特征是多數(shù)據(jù)源。 所謂多數(shù)據(jù)源是指同一張報(bào)表的數(shù)據(jù)會(huì)來自多個(gè)不同的數(shù)據(jù)表或視圖,甚至來自多個(gè)不同的異構(gòu)數(shù)據(jù)庫! 1 )人員信息表 ...  閱讀全文

          posted @ 2006-11-08 10:26 java-report| 編輯 收藏

          為什么說中國式報(bào)表特殊-4、報(bào)表的格式與數(shù)據(jù)

          報(bào)表格式只是報(bào)表工具要解決的一部分問題。我們用報(bào)表工具的目的,是要能從數(shù)據(jù)庫中讀出數(shù)據(jù),從而自動(dòng)產(chǎn)生報(bào)表,數(shù)據(jù)才是報(bào)表要解決的核心問題,但是不能單純地把二者分開(這也是選擇報(bào)表工具時(shí)需要格外重視的)。

          報(bào)表格式用Excel可以解決得很好,但是Excel沒有數(shù)據(jù)匯總方案,除非編程序往格子里填數(shù)據(jù),基本上沒法從數(shù)據(jù)庫中讀出數(shù)據(jù)自動(dòng)產(chǎn)生報(bào)表。而拖拽式的格式雖然解決得一般,但數(shù)據(jù)統(tǒng)計(jì)能力方面要比Excel強(qiáng)得很多,兩害相權(quán)取其輕,堆框雖費(fèi)勁,慢慢堆就行了,但統(tǒng)計(jì)匯總不行的話那就沒辦法了。

          所以,很多報(bào)表工具都采用拖拽式畫表,再輔以大量寫代碼的編程(就是數(shù)據(jù)處理,后面會(huì)詳細(xì)說明),來處理中國式報(bào)表。參見前文:為什么說中國式報(bào)表特殊-1、國外報(bào)表

          另外,因?yàn)?span lang="EN-US">Excel的易用,使得用戶能夠自己做表,幾乎所有用戶的報(bào)表都有Excel文件。用戶希望能將Excel的文件讀入報(bào)表工具,這樣就可以省去畫表的工作了;同時(shí),生成的報(bào)表,要能導(dǎo)出成Excel文件。但是因?yàn)橥献胶?span lang="EN-US">EXCEL的畫法完全不同,一定要生成EXCEL文件的話,大都會(huì)喪失格式,個(gè)別工具花了點(diǎn)功夫的可以做得很象(數(shù)巨報(bào)表導(dǎo)出EXCEL為了保證樣式不失真,將大量的報(bào)表對(duì)象轉(zhuǎn)成了合并格,某些報(bào)表對(duì)象轉(zhuǎn)成圖片,導(dǎo)出后的數(shù)據(jù)無法進(jìn)行二次處理),還得再進(jìn)行二次對(duì)齊、加工。至于讀入EXCEL文件,還是算了吧。

          posted @ 2006-11-08 10:24 java-report| 編輯 收藏

          為什么說中國式報(bào)表特殊-3、報(bào)表格式

          為什么說中國式報(bào)表特殊- 3 、報(bào)表格式

          下面是一個(gè)很常見的表-資產(chǎn)負(fù)債表。

          資產(chǎn)負(fù)債表 。?

          在手工制表的時(shí)候,我們都是拿尺子來畫表格。(也許中國式報(bào)表復(fù)雜是因?yàn)橹袊讼劝l(fā)明了尺子?)

          現(xiàn)在的報(bào)表工具提供兩種畫表的方式:拖拽式和Excel式。

          拖拽式的工具是拿很多小的文本框拼成一個(gè)大的矩形。這就存在邊框之間的重合、對(duì)齊問題。如果碰上大格套小格,或者用戶心血來潮要加減幾個(gè)框,對(duì)齊的工作量是很大的。而且,屏幕上看著對(duì)齊的表打印到紙上又不齊了。因?yàn)榇蛴C(jī)的分辨率比屏幕要高。(想像一下用拖拽式的工具畫資產(chǎn)負(fù)債表的情況……。)

          拖拽式模型其實(shí)是一個(gè)一般性的圖元編輯器模型,沒有體現(xiàn)出表格的規(guī)律性,什么都能畫,可什么畫起來都不大方便。(powerpoint也能畫東西,為什么沒人拿它畫表?)

          還好,我們還有Excel(這里要夸一夸微軟了)。

          EXCEL 采用網(wǎng)格線把格子圍出來的畫法,配合以合并格和邊框,好比給大家配上尺子和筆,通過單元格的合并和拆分,再復(fù)雜的表Excel也能畫出來。EXCEL的畫法充分體現(xiàn)了表格的規(guī)律性,特別方便,連用戶都會(huì)用。(用Excel畫資產(chǎn)負(fù)債表看看?)

          中國式報(bào)表采用Excel式的制表方式是非常非常合適的。

          如果單純是畫表的問題,那么拖拽式和Excel式的差別無非是效率高低的問題,但是一旦跟數(shù)據(jù)掛上鉤,問題就復(fù)雜得多了。

          posted @ 2006-11-08 09:58 java-report| 編輯 收藏

          為什么說中國式報(bào)表特殊-2、特點(diǎn)

          其實(shí)一句話就能概括中國式報(bào)表的特點(diǎn): 格式復(fù)雜、信息量大 。中國報(bào)表很少有不帶格線的:因?yàn)橹袊谋眍^比較亂,三五層的大格套小格很常見(還有著名的斜線),沒有格線容易看走眼。中國式報(bào)表的信息量大,各種各樣的數(shù)據(jù),明細(xì)的、匯總的,往往都集中在一張紙上。

          有人說中國式報(bào)表的復(fù)雜是因?yàn)閼?yīng)用水平低、業(yè)務(wù)不規(guī)范造成的。這種說法有一定道理,但不全對(duì)。舉個(gè)例子:基金行業(yè)是新興的行業(yè),是最有條件借鑒國外的經(jīng)驗(yàn)的,但是這兩年報(bào)表也是越做越復(fù)雜。銀行業(yè)的信息化水平也比較高,應(yīng)用也很成熟,他們的表一點(diǎn)也不簡單。
          ???
          可能報(bào)表習(xí)慣與文化有關(guān),在受中國文化的影響的國家和地區(qū),如日本、韓國、臺(tái)灣等,他們的報(bào)表都很復(fù)雜。看看咱們的方塊字,漢字由很多不同的部分(偏旁部首)組成的,而英文單詞則是26個(gè)英文字母進(jìn)行簡單組合。

          回到正題上來:格式復(fù)雜――意味著格式是報(bào)表工具要解決的一個(gè)問題;信息量大――意味著復(fù)雜的統(tǒng)計(jì)運(yùn)算。一個(gè)適合中國式報(bào)表的工具應(yīng)該能夠同時(shí)解決這兩個(gè)問題,才能算是一個(gè)好的工具。

          posted @ 2006-11-02 11:24 java-report| 編輯 收藏

          填報(bào)-web報(bào)表工具必不可少的功能

          ?????? 現(xiàn)在很多web報(bào)表工具都聲稱支持在線填報(bào),如快逸報(bào)表、FineReport、StyleReport、數(shù)巨等,但有些web報(bào)表工具其實(shí)只是能生成可以填寫的HTML而已,距離真正需要的填寫上報(bào)功能相去甚遠(yuǎn)。
          ????? 如果你有填報(bào)的需求,在選擇web報(bào)表工具的時(shí)候,可以著重考察以下幾個(gè)方面 :

          1. Web報(bào)表工具能夠處理數(shù)據(jù)入庫。開發(fā)者不用為每個(gè)報(bào)表編寫入庫程序,數(shù)據(jù)能自動(dòng)寫入事先設(shè)計(jì)好的、能反映業(yè)務(wù)規(guī)則的數(shù)據(jù)結(jié)構(gòu)中,而不是報(bào)表工具指定的固定數(shù)據(jù)結(jié)構(gòu)。需要填寫的web報(bào)表可能是行式的或交叉式的,數(shù)據(jù)入庫的規(guī)則在報(bào)表定義時(shí)應(yīng)當(dāng)只定義一行(或一格),其它行(格)能夠自動(dòng)按規(guī)則重復(fù);

          2. 填報(bào)方案能夠支持多級(jí)匯總填報(bào),即填報(bào)表格首先是從基層數(shù)據(jù)庫匯總而來,然后再回填入上級(jí)數(shù)據(jù)庫中,而不是總是對(duì)著一個(gè)空表填寫;

          3. 最好能支持離線填寫,即不聯(lián)網(wǎng)時(shí)也可以填寫,在聯(lián)網(wǎng)后再上報(bào)數(shù)據(jù);

          4. 提供合法性檢查功能,判斷事先定義好的檢查條件是否滿足,如不滿足則拒絕接收數(shù)據(jù)且給出提示;在頁面端提供類EXCEL的自動(dòng)計(jì)算功能,某個(gè)數(shù)據(jù)修改后,關(guān)聯(lián)的數(shù)據(jù)立即變動(dòng),計(jì)算關(guān)系可以在報(bào)表中事先定義;合法性檢查和自動(dòng)計(jì)算關(guān)系都與入庫定義類似需要能夠自動(dòng)按規(guī)則重復(fù)而不必為每個(gè)字段單獨(dú)設(shè)計(jì);

          5. 提供多種多種編輯風(fēng)格,如編輯框、下拉框、CheckBox等;下拉框的內(nèi)容可以是固定列表,也可以來自數(shù)據(jù)庫,另外,還應(yīng)當(dāng)支持兩個(gè)下拉框之間的關(guān)聯(lián)過濾(如部門和子部分之間自動(dòng)過濾);

          posted @ 2006-10-27 08:44 java-report| 編輯 收藏

          評(píng)《web報(bào)表的采購成本》

          1 、大部分項(xiàng)目其實(shí)很難精確報(bào)表開發(fā)的工作量:固定報(bào)表的數(shù)量有限,可以客觀評(píng)估;隨意性比較大的報(bào)表,往往是跟客戶在溝通中確定的,有相當(dāng)一部分成本是花在溝通上了。


          2
          、使用 web 報(bào)表工具減少了開發(fā)量,但是相應(yīng)的技術(shù)風(fēng)險(xiǎn),包括:集成、技術(shù)支持、服務(wù)、培訓(xùn)等等,都應(yīng)該考慮,而不僅僅是錢上面的簡單加減。


          3
          、全面了解合作廠商的背景:成立時(shí)間、人數(shù)、技術(shù)原創(chuàng)程度、實(shí)施案例等,對(duì)你做出選擇非常重要,尤其注意:有軟件著作權(quán)不等于技術(shù)原創(chuàng)


          4
          、使用 web 報(bào)表的不便:與用戶的交互性不好,客戶化定制不方便。很多工具宣傳的“自定義 web 報(bào)表”能實(shí)現(xiàn)的功能非常有限。


          5
          、報(bào)表行業(yè)并不成熟,各產(chǎn)品間并不兼容,產(chǎn)品定價(jià)也沒有統(tǒng)一的標(biāo)準(zhǔn),不同產(chǎn)品的價(jià)格差別比較大。

          posted @ 2006-10-25 16:31 java-report| 編輯 收藏

          僅列出標(biāo)題
          共3頁: 上一頁 1 2 3 下一頁 
          主站蜘蛛池模板: 焦作市| 太湖县| 留坝县| 靖远县| 贵溪市| 夹江县| 山东省| 柏乡县| 盐亭县| 长顺县| 三原县| 龙井市| 巢湖市| 郑州市| 淳化县| 西畴县| 中山市| 清新县| 尚志市| 棋牌| 临沧市| 吴旗县| 澄迈县| 石狮市| 巴青县| 钟山县| 凤城市| 闵行区| 鄯善县| 呼伦贝尔市| 济南市| 黑水县| 灵丘县| 桐柏县| 阿图什市| 岳阳县| 冕宁县| 健康| 宜兰市| 永吉县| 长治县|