65.9K
CodeProject 正在变化。 阅读更多。
Home

如何在 SSRS 2005 中旋转饼图

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.50/5 (5投票s)

2009年3月24日

CPOL

3分钟阅读

viewsIcon

41269

如何在 SSRS 2005 中更改饼图中第一个扇形的角度。

引言

在本文中,我们将讨论使用 SSRS 2005 的人们遇到的一个常见问题。该软件不允许用户明确定义饼图的起始角度,许多图表专家认为,该软件的硬编码默认设置并非最佳。在本文中,我将向您展示如何使用 UI 中提供的一些简单功能来解决此问题。

背景

本文将对熟悉如何在 SSRS 中手动构建报表的人员有所帮助。因此,如果您没有使用 SSRS 的经验,那么本文不适合您。

饼图在报表应用程序中无处不在,因为它们易于理解,并为任何报表增添了额外的色彩。虽然我不提倡过度使用饼图来制作每个报表,但它们可以很有用,并且可以使您的报表更赏心悦目。Gene Zelazny 的著作“用图表表达”建议首先放置最重要的饼图扇形,并将饼图的扇形从 12:00 开始。SSRS 2005 中饼图的默认设置是从 3:00 开始,这使得饼图外观不寻常且难以阅读。

使用代码

首先要做的是创建一个新的 SSRS 报告项目,并向其中添加一个新报告,不要使用向导。接下来,创建一个数据集并建立与可从 CodePlex 获取的 AdventureWorks 示例数据库的连接。将命令类型设置为“文本”,因为您将在 SQL 中编写查询,而不是使用存储过程。将以下代码复制到查询窗口中,如下所示

SELECT TOP 10 a.ProductID, a.Name, a.TotalSales
FROM
    (
        SELECT p.ProductID, p.Name, SUM(soh.TotalDue) AS TotalSales
        FROM Production.Product p WITH(NOLOCK)
        JOIN Sales.SalesOrderDetail sod WITH(NOLOCK) ON 
             sod.ProductID = p.ProductID
        JOIN Sales.SalesOrderHeader soh WITH(NOLOCK) ON 
             soh.SalesOrderID = sod.SalesOrderID
        WHERE CONVERT(DATETIME, CONVERT(VARCHAR, soh.OrderDate, 101)) 
              BETWEEN @StartDate AND @EndDate
        GROUP BY p.ProductID, p.Name
    ) a
ORDER BY NewID()

ReportQuery.png

接下来,转到“布局”选项卡,然后从工具箱侧边栏中拖动一个图表。右键单击该图表,然后转到属性。从“图表类型”列表中选择“饼图”。您的对话框应该如下所示

SelectPieChart.png

现在,从“调色板”下拉框中选择“柔和”(这将使您可以读取饼图的每个扇形中的值)。单击“确定”。

从“数据集”侧边栏中,将 TotalSales 值拖到图表上,然后将其拖放到显示“在此处放置数据字段”的区域。接下来,将 Name 值从“数据集”侧边栏拖到图表中显示“在此处放置类别字段”的区域。

完成后,右键单击该图表,然后单击“属性”。转到“图表属性”对话框中的“数据”选项卡,然后单击“值”列表旁边的“编辑”。加载该对话框后,单击“点标签”,并将其填写成这样

PieChartPointLabels.png

这将使我们显示饼图中每个楔形的百分比(四舍五入到最接近的整数)。单击“确定”。

在“图表属性”对话框中,转到“3D 效果”选项卡,并将其设置为如下所示

RotateUsing3DSettings.png

基本上,我们告诉 SSRS 制作一个看起来平坦的图表,但它被逆时针旋转了 90 度,这使得我们的饼图从 12:00 开始而不是 3:00 开始。只要您告诉它不要使用任何着色技巧并使其正交,它应该看起来像一个普通的饼图(而不是一个 3D 饼图)。

一些最后的润色

转到“图例”选项卡并使其看起来像这样

PieChartLegend.png

然后,转到“数据”选项卡,单击“编辑”按钮旁边的“类别字段”。现在,转到“排序”选项卡,单击网格中的第一个框,然后从下拉列表中选择“Fields!TotalSales.Value”。接下来,将网格中同一行的排序顺序更改为降序。这将确保您的图表从 12:00 开始显示最重要的扇形。

关注点

有趣的是,他们决定从 3:00 开始饼图,但我的猜测是这只是一个简单的疏忽,而不是有意为之。话虽如此,我很高兴有一种方法(尽管不优雅)可以进行调整。

历史

  • 提交文章的初步修订版。
© . All rights reserved.