在資料資訊系統中,常常會看到這樣一類報表需求,它們往往格式簡單,一般為清單式明細報表,但是要顯示的列很多。而不同終端使用者在不同時刻關心的資料又不同,這樣就要求報表能夠讓他們随心所欲的選擇要顯示的列,以便直覺地檢視資料。最終效果如下圖所示:

那怎麼實作這種需求呢?
多做幾個典型報表,根據使用者不同進行不同的加載?這樣報表開發工作量就增加了,連吃雞的時間都沒有了;
寫個存儲過程動态計算要顯示的表字段?還需要調試存儲過程。
有沒有更簡單高效的實作方法???——當然必須有,下面看我放大招。
工欲善其事,必先利其器。我們選擇的利器就是:潤乾報表,具體實作操作如下:
首先,在資料集上通過 sql 實作動态取數
根據需求效果,我們需要定義兩個參數,用于接收要顯示的表和字段資訊:
【技巧】${參數名} 為參數的進階用法,可以在報表中動态的進行表達式的替換,快速實作動态執行語句的拼接。
然後,在報表單元格表達式中實作動态顯示字段
其中,
B1 單元格:=to(1,ds1.fcount()) 并設定擴充方式為橫向擴充,用于計算需要顯示的列數
B2 單元格:=ds1.fname(B1) 跟随 B1 擴充,用于動态顯示列名稱
A3 單元格:=ds1.select(#0) 根據資料集的行數進行縱向擴充
B3 單元格:=ds1.field(B1) 用于動态顯示對應字段資料
A 列為協助實作效果列,故需要選擇該列,設定該列隐藏。
最後,我們制作一下參數模闆,友善使用者選擇自己想要顯示的表和列資料
- 資料集 sql 實作動态取數
【技巧】使用參數的 ${參數名} 用法
- 單元格表達式實作動态顯示字段
【技巧】使用資料集函數 ds.field()和 ds.fieldname()
至此,動态列報表制作就完成了,我們僅僅使用了潤乾報表的參數特殊用法和資料集函數就做好了動态列報表,這一波操作 6 不 6?快來加入潤乾大家庭,更多快速簡便的報表制作方式等你來挖掘。
作者:xiaohuihui
連結:
http://c.raqsoft.com.cn/article/1533088998061?r=IBelieve來源:乾學院
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。