天天看點

帆軟finereport實作動态切換分組和清單模式

首先簡單說一下什麼是帆軟報表的“分組”還有“清單”,

分組呢,就是這樣:

帆軟finereport實作動态切換分組和清單模式

清單呢,就是這樣:

帆軟finereport實作動态切換分組和清單模式

簡單說,清單就是不合并重複的單元格了,分組就是自動把那些重複的單元格給合并起來。

最理想的情況下,是通過一些按鈕來控制在資料設定的分組與清單之間的狀态進行切換,但是帆軟沒這麼智能,想了半天(真的是半天,一整個早上),試了很多種辦法,最後發現最簡單粗暴的方法就是最好用的方法:

随便添加一個下拉框按鈕(我用的是cpt普通報表),添加一個是分組還是清單的變量,再加上“查詢”按鈕,

然後在sql語句裡面去擷取這個變量,如果是分組呢,不做任何處理,如果是清單呢,就取值再加上序号,

我用的是oracle,是以就是 ‘國家’ || rownum (其他sql語言也有類似的東西,自己百度了,這裡不展開)

這樣跑出來的結果就是:

帆軟finereport實作動态切換分組和清單模式

但是我們肯定不要這個123,很簡單,添加條件屬性,用finereport的left函數取值(設定“新值”),在這裡是left( $ $ $,2)

有時候,字段的長度是動态變化的,比如中國、俄羅斯、哈薩克斯坦,這樣不整齊的話比較難搞,其實方法也還是有,就是加一串比較長的數字,比如可以rownum加上一百萬(7位數),通常你的查詢條目不會超過一百萬條,如果超過了就加到千萬級或者億級即可。

這樣,在帆軟的條件屬性裡面就可以設定

新值 left( $ $ $,len($ $ $ )-7),

(csdn連續打出三個$放在一起會出現顯示異常,無奈我隻能在中間加上空格,實際上是沒有空格的)

然後條件就設定1==1即可

這樣在加載出來的時候就會把後面的rownum自動去掉

就可以實作按清單模式分行但是内容卻是一樣的了。