在資料資訊系統中,常常會看到這樣一類報表需求,它們往往格式簡單,一般為列表式明細報表,但是要顯示的列很多。而不同終端使用者在不同時刻關心的資料又不同,這樣就要求報表能夠讓他們隨心所欲的選擇要顯示的列,以便直觀地檢視資料。最終效果如下圖所示:
那怎麼實現這種需求呢?
多做幾個典型報表,根據使用者不同進行不同的載入?這樣報表開發工作量就增加了,連吃雞的時間都沒有了;
寫個儲存過程動態計算要顯示的表字段?還需要除錯儲存過程。
有沒有更簡單高效的實現方法???——當然必須有,下面看我放大招。
工欲善其事,必先利其器。我們選擇的利器就是:潤幹報表,具體實現操作如下:
首先,在資料集上通過 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()
動態列報表的製作
在資料資訊系統中,常常會看到這樣一類報表需求,它們往往格式簡單,一般為列表式明細報表,但是要顯示的列很多。而不同終端使用者在不同時刻關心的資料又不同,這樣就要求報表能夠讓他們隨心所欲的選擇要顯示的列,以便直觀地檢視資料。最終效果如下圖所示 動態列效果圖 那怎麼實現這種需求呢?多做幾個典型報表,根據使...
動態交叉表頭報表的製作
在資料資訊系統中,常常會看到這樣一類報表需求,它們的樣式為交叉報表的變形 既縱向分組擴充套件又橫向分組擴充套件,在交叉區域對統計項進行彙總 同時在縱向分組時,要求每個組跟隨乙個與分組相對應的橫向表頭。對比效果如下圖所示 從上圖可看到,報表縱向按照年進行分組擴充套件,同時每年又能生成乙個橫向分組表頭,...
動態交叉表頭報表的製作
在資料資訊系統中,常常會看到這樣一類報表需求,它們的樣式為交叉報表的變形 既縱向分組擴充套件又橫向分組擴充套件,在交叉區域對統計項進行彙總 同時在縱向分組時,要求每個組跟隨乙個與分組相對應的橫向表頭。對比效果如下圖所示 從上圖可看到,報表縱向按照年進行分組擴充套件,同時每年又能生成乙個橫向分組表頭,...