如何在MS Access窗体中正确显示饼图?Access 2013饼图异常求助
Access 2013饼图异常问题解决方案
问题描述
原使用的透视查询SQL:
TRANSFORM Count(books.ID) AS CountOfID SELECT books.Category FROM books WHERE (((books.Category)='Fantasy')) GROUP BY books.Category PIVOT (Switch(books.status=1,'Available',books.status=2,'Reserved',books.status=3,'Unavailable'));
查询返回宽表结构结果:
Category Total Available Unavailable Fantasy 116 46 70
尝试用该数据生成饼图时,出现不明的East、West、North选项,且饼图的Row Source被自动修改为错误SQL:
SELECT [Unavailable],Sum([Available]) AS [SumOfAvailable] FROM [qryGetFantasy] GROUP BY [Unavailable];
解决方案
1. 重构数据源查询(转为饼图兼容的长表结构)
Access饼图需要长表格式(状态名称与对应数量分为独立两列),而非原透视查询的宽表。创建新查询,使用以下SQL:
SELECT Switch(books.status=1,'Available',books.status=2,'Reserved',books.status=3,'Unavailable') AS BookStatus, Count(books.ID) AS StatusCount FROM books WHERE books.Category='Fantasy' GROUP BY Switch(books.status=1,'Available',books.status=2,'Reserved',books.status=3,'Unavailable');
该查询返回符合饼图要求的结构:
| BookStatus | StatusCount |
|---|---|
| Available | 46 |
| Unavailable | 70 |
2. 重新绑定饼图数据源
- 打开包含饼图的窗体/报表,选中饼图控件并打开属性窗口
- 找到行源(Row Source) 属性,清空自动生成的错误SQL,选择刚创建的新查询,或直接粘贴上述重构后的SQL
- 在图表向导中,将
BookStatus设置为类别字段,StatusCount设置为数值字段
3. 调整饼图显示效果
- 运行窗体/报表,确认饼图仅显示书籍状态选项
- 右键饼图,选择图表选项,勾选「数据标签」并设置显示内容为「值和百分比」,匹配预期的显示效果
内容的提问来源于stack exchange,提问作者Anirudh Lou
相关产品推荐
相关产品推荐

