SSRS(五):子報表搭配參數教學

子報表是一個報表項目,可在主報表的主體內顯示另一個報表。報表中子報表的概念類似於網頁中的框架。它用於在報表中內嵌報表。任何報表都可以做為子報表。可以設計父報表來傳遞參數給子報表。子報表可以在資料區域中重複,使用參數在每一個子報表執行個體中篩選資料。

目標:報表呈現每一筆訂單資料,並呈現該訂單的所有商品名稱和數量及金額。

1. 先設計子報表部分,加入一個報表,加入資料集列出某筆訂單的所以商品。

[sql]SELECT [Order Details].*, Products.ProductName
FROM [Order Details]
INNER JOIN Products
ON [Order Details].ProductID = Products.ProductID
WHERE [Order Details].OrderID = @OrderID[/sql]
SELECT Order Detail

2. 接著我們想列出每筆商品訂購的金額,可以用SQL或資料集來處理,這裡我們示範由報表來處理,加入加入導出欄位

Add Column

3. 新增一個 Amount 的欄位,欄位來源我們可以用運算式(VB)來實現

Adding Column Amount

4. 價格 * 數量 * ( 1 – 折扣 ) 算出總金額

Function

5. 我們將需要的欄位拉到資料表,選擇 [OrderID] 屬性的HideDuplicates選擇資料集名稱,如果項目的值和上列一樣,就不會重覆出現

Set HideDuplicates

5. 在最後面再做一個總金額加總,(詳細資料)→加入總計後方

Adding Total

6. 可以將金額的欄位屬性調整金錢格式,依照需求自行設定,這裡我們選擇小數後兩位、千分位符號和使用美國的$字號

Set Money Format

7. 然後執行看看執行結果,看起來很OK!

View SubReport

8. 接下來新增一個報表,加入一個資料集列出所有訂單資料。

[sql]SELECT Orders.*, Customers.CompanyName, Customers.ContactName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID[/sql]
Add DateSet To List All Orders

9. 先拉一個清單至報表,然後再把設置欄位,接著再加入一個子報表

如果中文字變成口口口的話,調一下自型就可以了。
Layout the Report And Add SubReport

10. 子報表屬性,設定上面所新增的子報表

Set Report

11. 設定子報表參數部分,讓參數傳至子報表內

Send Param

12. 設置好子報表後,我們要來設置每一頁只呈現一筆資料。(詳細資料)→群組屬性

Set One Page to a Row Data

13. 在分頁符號的部分,選取分頁符號選項在群組的每個個體之間

Set Page

14. 最後來預覽看執行結果,效果相當完美!!可以上下筆看每一筆資料。

Result

SSRS(SQL ServerReporting Services)系列文章:

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>