企業在選擇報表插件時,往往忽略一個很關鍵的問題,就是不重視報表與數據之間的關係。
出現這種情況也很正常,我們最早接觸的報表插件,可能就是MS Access裡面帶的報表插件,以及VB裡面捆綁的crystal report(水晶報表)。這些工具最典型的方法,就是,選擇資料庫,選擇數據集,選擇欄位,選擇條件,選擇排序,然後把欄位向上擺。
不光是Crystal Report(水晶報表)是這樣,很多常見的報表插件,不論是國外的"高端"產品,還是現在在百度中一搜"報表插件"能見到的一大堆國內報表產品,基本上也都是這種方式。
這種方式不能說沒有道理,它的理論是:
1、一張報表中的數據,基本上是有關係的,因此可以利用關係型資料庫的特性,建立一個視圖所需要的數據都包括進來。
2、可以用子報表的方法,將不同的數據分別處理。
然而,並不是這樣簡單!
首先,如果表複雜一點,建立一個複雜的視圖絕不是一個很輕鬆的工作,更不用說除了建立視圖的效率,還要考慮資料庫與報表的運行效率。
其次,子報表與主報表之間,既有可能在格式上有麻煩(比如表格的對齊),也有可能在計算上有困難(主子報表之間往往只傳遞參數,無法直接引用數據進行公式計算)
因此,對報表插件而言,最根本的問題就是如何處理數據,以不同的方法處理數據,開發效率,運行效率可能都會相差十倍以上。而只有數據模型的改良,才是真正關乎報表插件效率的革命。這方面做得不錯的報表工具像是 FineReport,其最根本的優勢也在於改進的數據模型與報表模型。
建議大家在選擇報表插件時,一定要重視如何提取數據,這直接關係到未來的開發成本,以及生成的報表的可用性(會不會運行半天才能出來一張)。報表的開發成本,不僅僅在於畫線、擺位置,更在於把數據表現出來。
喜歡這篇文章嗎?歡迎分享按讚,給予我們支持和鼓勵!