FineReport自學習題第四題——圖表


題目

實現功能:

  • 可以選擇數據庫中存在的所有年份
  • 根據選擇的年份統計出該年下每個月的訂單總數、已付訂單數量、月銷量
  • 根據統計的數據制作混合圖表,其中已付訂單數量使用折線圖,月銷量坐標軸在右側
  • 分類軸日期傾斜顯示
  • 統計表中日期從小到大排列
  • 動態顯示標題:xx年各月份銷售業績表

使用數據:

  • FRDemo中的訂單表與訂單明細

數據集設計要點

月銷量 = [訂單明細].[數量] * [訂單明細].[單價]
一個訂單ID對應有多張訂單,所以光統計[訂單]里ID的數量是達不到范例中的效果的
數據集中最好單獨統計出一列“年份”字段,方便后面在表格中接收參數
我在這里用了2個數據集,一個數據集統計“訂購數量”和“月銷售量”以及“訂購年月”,設置有‘$year’變量以提供參數查詢;另一個數據集統計數據庫中存在的所有年份,供年份控件使用。

以下是后兩個數據集的SQL語句:

SELECT     strftime('%Y-%m', 訂單.訂購日期) AS 日期,
        COUNT(訂單.訂單ID) AS 訂單數量,
        sum(case when 訂單.是否已付='true' then 1 else 0 end) AS 已付訂單數量,
        SUM(訂單明細.數量*訂單明細.單價) AS 月銷量,
        strftime('%Y', 訂單.訂購日期) AS 年份
FROM     訂單, 訂單明細
WHERE    訂單.訂單ID = 訂單明細.訂單ID AND
        年份 = '${year}'
GROUP BY     訂購年月, 年份
ORDER BY    年份;
SELECT     strftime('%Y', 訂單.訂購日期) AS 年份
FROM     訂單
GROUP BY     年份
ORDER BY    年份;

圖表設計

在此題中圖表才是真正的重點。該圖例要求我們使用“柱狀圖” + “折線圖”的組合圖形式進行設計,且折線圖的Y軸刻度必須隱藏,月銷量的Y軸置於圖表右側。

1、首先選中一塊區域合並,作為我們插入圖表的地方。右鍵單擊該區域,在 “單元格元素” 中選擇 “插入圖表” ,此時界面會彈出圖表類型選擇框,在左邊的類型中選擇組合圖 ,選擇第一個 “柱形圖 - 折線圖” 。

2、動態顯示標題:xx年各月份銷售業績表,綁定年份控件名的值即可。

3、創建好圖表后,我們需要讓圖表獨立顯示在當前頁面而不是跟着表格變動。故在此我們需要將圖表的父格改成無。在右側側邊欄找到 “單元格屬性” ,選擇 “擴展” 選項卡,把左父格和上父格改成無。

 4、現在,讓我們把數據列加到圖表中。在右側側邊欄中找到 “單元格元素” ,選擇 “數據” 選項卡。注意,此處“數據”選項卡內有兩個子項,分別是“柱狀圖”和“折線圖”,接下來我們要分別把數據列輸進去。

首先在 “數據來源” 中選擇 “單元格數據” ,隨后在 “分類名” 輸入 “=A3”, 系列名與系列值 需要輸入兩組,一組是“=B2”和“=B3”,一組是“=D2”和“=D3”。折線圖同理。

分類名:x軸。   

系列名:2個柱形、1根折線。 

系列值:每個系列的值。

5、接下來,我們還需要對Y軸進行設置。在 “單元格元素” 中打開 “樣式” 選項卡,找到子項 “坐標軸” ,隨后點擊下方的“+”號,添加一列新的Y軸3,然后將Y軸2的軸標簽修改為 “隱藏” ,將Y軸2和Y軸3的位置修改為 “右側” 。

 

軸標簽位置的值代表着Y坐標軸是在左側還是右側,選擇0值會使坐標軸靠在最左側。
軸標簽的顯示和隱藏是表示該Y軸是否顯示在圖表中。從圖例中我們可以看到,左側顯示的是“訂購數量”的Y軸,右側顯示的是“月銷量”的Y軸,沒有“已付訂單”的Y軸2,所以在這里我們要隱藏Y軸2。

6、添加完Y軸之后,我們點擊 “樣式” 選項卡下的 “系列” 子項,在這里設置坐標軸對應的系列。

同樣,我們可以在這里看見“柱狀圖”和“折線圖”兩項。首選選擇“柱狀圖”,在 “堆積和坐標軸” 中點擊“+”號添加新項,界面上會彈出坐標軸設置窗口,在Y軸中選擇“Y軸3”,然后添加條件“系列序號 等於 2”,點擊屏幕上的空白處使修改生效。

注意,柱形圖用到的是y軸和y軸3,折線圖用到的是y軸2。

 

 

 7、分類軸日期傾斜顯示。

 8、改變柱形圖和折線圖顏色。在特效->條件顯示,添加條件。

 

到這里,我們的圖表已經基本符合我們題目的要求了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM