1. 描述
兩個必要控件,年份和月份,客戶希望,在僅僅選擇年份的時候,是按照月份進行彙總統計;同時選擇年份和月份的時候,按照當前年月顯示明細數據。實現效果如下圖:
僅選擇年份時:
同時選擇年份和月份時:
2. 場景限制
客戶的數據庫中是按照 datetime 存儲的,且客戶對於 SQL,ETL 等不是很熟悉,想基於我們的産品進行開發,實現效果。
想在一張頁面完成。
3. 解決方案
用年份和月份參數來控制行高
4. 實現方案
4.1 新建數據集
添加三個數據查詢,如下:
ds1:
SELECT 訂購日期,strftime('%Y',訂購日期) as 年,strftime('%m',訂購日期) as 月 ,運貨費,貨主省份
FROM s訂單
where 1=1
${if(len(a)=0,'',"and strftime('%Y',訂購日期) in ('"+a+"')")}
${if(len(b)=0,'',"and strftime('%m',訂購日期) in ('"+b+"')")}
order by 訂購日期
ds2:作爲年控件數據字典
SELECT strftime('%Y',訂購日期) as 年
FROM s訂單
ORDER BY 訂購日期
ds3:作爲月控件數據字典
SELECT strftime('%m',訂購日期) as 月
FROM s訂單
where 1=1
${if(len(a)=0,'',"and strftime('%Y',訂購日期) in ('"+a+"')")}
order by 訂購日期
4.2 模板設計
将字段拖入對應的單元格中,如下所示:
注:第二行按照月份進行展示,第三行按照日期進行展示
4.3 添加條件屬性
給B2單元格添加條件屬性
說明:下圖中的b爲4.1 ds1中設置的訂購日期的參數控件名(表示月)
【雖然但是ds1中兩個參數名字都爲訂購日期,但需要區分控件a表示年,控件b表示月】
注:表示當參數“月份”中有值時,該行(即第二行)行高設爲 0,即隐藏該行,展示第三行。
給B3 單元格添加條件屬性
注:表示當參數“月份”中沒有值時,該行(即第三行)行高設爲 0,即隐藏該行,展示第二行。
5. 效果預覽
6. 已完成模板
已完成的模板,可參見:%FR_HOME%\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\日期彙總.cpt