1. 程式人生 > >動態列報表的制作

動態列報表的制作

動態列報表

在數據信息系統中,常常會看到這樣一類報表需求,它們往往格式簡單,一般為列表式明細報表,但是要顯示的列很多。而不同終端用戶在不同時刻關心的數據又不同,這樣就要求報表能夠讓他們隨心所欲的選擇要顯示的列,以便直觀地查看數據。最終效果如下圖所示:

技術分享圖片

那怎麽實現這種需求呢?

多做幾個典型報表,根據用戶不同進行不同的加載?這樣報表開發工作量就增加了,連吃雞的時間都沒有了;

寫個存儲過程動態計算要顯示的表字段?還需要調試存儲過程。

有沒有更簡單高效的實現方法???——當然必須有,下面看我放大招。

工欲善其事,必先利其器。我們選擇的利器就是:潤乾報表,具體實現操作如下:

首先,在數據集上通過sql實現動態取數

根據需求效果,我們需要定義兩個參數,用於接收要顯示的表和字段信息:

技術分享圖片

對應數據集sql配置如下:

技術分享圖片

【技巧】${參數名}為參數的高級用法,可以在報表中動態的進行表達式的替換,快速實現動態執行語句的拼接。

然後,在報表單元格表達式中實現動態顯示字段

技術分享圖片

其中,

B1單元格:=to(1,ds1.fcount()) 並設置擴展方式為橫向擴展,用於計算需要顯示的列數

B2單元格:=ds1.fname(B1) 跟隨B1擴展,用於動態顯示列名稱

A3單元格:=ds1.select(#0) 根據數據集的行數進行縱向擴展

B3單元格:=ds1.field(B1) 用於動態顯示對應字段數據

A列為協助實現效果列,故需要選擇該列,設置該列隱藏。

最後,我們制作一下參數模板,方便用戶選擇自己想要顯示的表和列數據

技術分享圖片

設置B2和D2編輯風格為下拉數據集(數據集為提前準備好的內建數據集),並在D2設置關聯過濾,便於用戶了解對應表下有哪些字段供選擇,進行數據分析。

技術分享圖片

好了,一個完美的動態列報表就完成了,我們來回顧一下其中遇到的問題和解決的技巧:

1.數據集sql實現動態取數

【技巧】使用參數的${參數名}用法

2.單元格表達式實現動態顯示字段

【技巧】使用數據集函數ds.field()和ds.fieldname()

至此,動態列報表制作就完成了,我們僅僅使用了潤乾報表的參數特殊用法和數據集函數就做好了動態列報表,這一波操作6不6?快來加入潤乾大家庭,更多快速簡便的報表制作方式等你來挖掘。


動態列報表的制作