動態列報表的製作

2021-09-20 09:14:55 字數 1514 閱讀 8070

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

動態列效果圖

那怎麼實現這種需求呢?

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

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

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

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

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

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

報表引數配置

對應資料集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()

動態列報表的製作

在資料資訊系統中,常常會看到這樣一類報表需求,它們往往格式簡單,一般為列表式明細報表,但是要顯示的列很多。而不同終端使用者在不同時刻關心的資料又不同,這樣就要求報表能夠讓他們隨心所欲的選擇要顯示的列,以便直觀地檢視資料。最終效果如下圖所示 那怎麼實現這種需求呢?多做幾個典型報表,根據使用者不同進行不...

動態交叉表頭報表的製作

在資料資訊系統中,常常會看到這樣一類報表需求,它們的樣式為交叉報表的變形 既縱向分組擴充套件又橫向分組擴充套件,在交叉區域對統計項進行彙總 同時在縱向分組時,要求每個組跟隨乙個與分組相對應的橫向表頭。對比效果如下圖所示 從上圖可看到,報表縱向按照年進行分組擴充套件,同時每年又能生成乙個橫向分組表頭,...

動態交叉表頭報表的製作

在資料資訊系統中,常常會看到這樣一類報表需求,它們的樣式為交叉報表的變形 既縱向分組擴充套件又橫向分組擴充套件,在交叉區域對統計項進行彙總 同時在縱向分組時,要求每個組跟隨乙個與分組相對應的橫向表頭。對比效果如下圖所示 從上圖可看到,報表縱向按照年進行分組擴充套件,同時每年又能生成乙個橫向分組表頭,...