子報表是一個報表項目,可在主報表的主體內顯示另一個報表。報表中子報表的概念類似於網頁中的框架。它用於在報表中內嵌報表。任何報表都可以做為子報表。可以設計父報表來傳遞參數給子報表。子報表可以在資料區域中重複,使用參數在每一個子報表執行個體中篩選資料。
目標:報表呈現每一筆訂單資料,並呈現該訂單的所有商品名稱和數量及金額。
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]
2. 接著我們想列出每筆商品訂購的金額,可以用SQL或資料集來處理,這裡我們示範由報表來處理,加入加入導出欄位
3. 新增一個 Amount 的欄位,欄位來源我們可以用運算式(VB)來實現
4. 價格 * 數量 * ( 1 – 折扣 ) 算出總金額
5. 我們將需要的欄位拉到資料表,選擇 [OrderID] 屬性的HideDuplicates選擇資料集名稱,如果項目的值和上列一樣,就不會重覆出現
5. 在最後面再做一個總金額加總,(詳細資料)→加入總計→後方
6. 可以將金額的欄位屬性調整金錢格式,依照需求自行設定,這裡我們選擇小數後兩位、千分位符號和使用美國的$字號
7. 然後執行看看執行結果,看起來很OK!
8. 接下來新增一個報表,加入一個資料集列出所有訂單資料。
[sql]SELECT Orders.*, Customers.CompanyName, Customers.ContactName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID[/sql]
9. 先拉一個清單至報表,然後再把設置欄位,接著再加入一個子報表
如果中文字變成口口口的話,調一下自型就可以了。