問題描述: 如何在 Access2007 表中同時顯示明細、小計、總計?
ID fullname pay
2 a ¥500.00
4 a ¥600.00
5 a ¥700.00
6 b ¥800.00
7 b ¥55.00
有以上格式的表格,要根據 FULLNAME 做小計,然後全部的做總計,變成以下格式
fullname pay
a ¥700.00
a ¥600.00
a ¥500.00
a 小計 ¥1,800.00
b ¥55.00
b ¥800.00
b 小計 ¥855.00
總計 ¥2,655.00
該如何完成?
問題解答:首先,應該了解, 表 是用來存儲數據的,而不是用來顯示統計結果以及顯示給最終用戶看的。類似工作應該在 Access2007 報表 中完成,報表中可以分組且顯示小計。具體內容你可以參考幫助或者 NORTHWIND.MDB 示例 數據庫 中的報表。
其次,在 ADO 中專門有一部分,稱為數據整形用來完成上述工作,但是它需要配合 VB 的 DATAGRID 等控件來完成顯示。 部分 VB 控件也可以使用在 Access2007 的窗體中。
最後,如果你實在想在 Access2007 的表格中完成,你可以使用組織 JET SQL 生成查詢的方式來完成。
select fullname,pay from pay
用來查詢出明細
SELECT pay.fullname & " 小計" AS 表達式1, Sum(pay.pay) AS payAll
FROM pay
GROUP BY pay.fullname & " 小計"
用來 分類匯總 小計,注意上述技巧,在 FULLANME 字段旁加“ 小計”不只是為了好看,要將小計這行放在明細的下面完全要靠 ORDER BY FULLNAME 來實現,你可以通過調整這一行來編排它的顯示順序
select "總計", sum(pay) from pay
用來顯示總計數,請注意,“總”字的 ANSI 編碼必須大於 FULLNAME 字段中任何一個字符,否則就無法根據 FULLNAME 排序將總計數放在表格的最下面一行。提示:不能用“總”的時候你可以用其他字符,甚至是符號也可以,只要它的機器碼夠大就行。
將上述語句用 UNION ALL 來組織就可以達到預想的效果。
select fullname,pay from pay
union all
SELECT pay.fullname & " 小計" AS 表達式1, Sum(pay.pay) AS payAll
FROM pay
GROUP BY pay.fullname & " 小計"
union all
select "總計", sum(pay) from pay
order by fullname