報表和數據的關系
選擇報表工具時,有一大誤區,就是不重視報表與數據之間的關系.
出現這種情況也很正常,我們最早接觸的報表,可能就是MS Access里面帶的報表工具,以及VB里面捆綁的Crystal Report. 這些工具最典型的方法,就是,選擇數據庫,選擇數據集,選擇字段,選擇條件,選擇排序,然后把字段向上擺.不光是Crystal Report是這樣,很多常見的報表工具,不論是國外的"高端"產品,還是現在在Google中一搜"報表工具"能見到的一大堆國內的低端產品,基本上也都是這種方式.
這種方式不能說沒有道理,它的理論是:
1、一張報表中的數據,基本上是有關系的,因此可以利用關系型數據庫的特性,建立一個視圖所需要的數據都包括進來。
2、可以用子報表的方法,將不同的數據分別處理。
然而,并不是這樣簡單!
首先,如果表復雜一點,建立一個復雜的視圖絕不是一個很輕松的工作,更不用說除了建立視圖的效率,還要考慮數據庫與報表的運行效率。
其次,子報表與主報表之間,既有可能在格式上有麻煩(比如表格的對齊),也有可能在計算上有困難(主子報表之間往往只傳遞參數,無法直接引用數據進行公式計算)
因此,對報表工具而言,最根本的問題就是如何處理數據,以不同的方法處理數據,開發效率,運行效率可能都會相差十倍以上。而只有數據模型的改良,才是真正關乎報表工具效率的革命。象新一代報表工具如 FineReport,其最根本的優勢也在于改進的數據模型與報表模型。
建議大家在選擇報表工具時,一定要重視如何提取數據,這直接關系到未來的開發成本,以及生成的報表的可用性(會不會運行半天才能出來一張)。報表的開發成本,不僅僅在于畫線、擺位置,更在于把數據表現出來。
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
了解Java報表工具就從這里開始