Reporting Services 中的复杂图表?

Posted

技术标签:

【中文标题】Reporting Services 中的复杂图表?【英文标题】:Complex graph in Reporting Services? 【发布时间】:2009-12-22 01:00:25 【问题描述】:

我正在尝试模仿这个图表,或者尽可能接近:

http://img193.imageshack.us/img193/1748/graphu.png

特点:

底部的代码(必须有) 费率在旁边(必须有) 今年的数据集和去年的数据集(必备) 向上和向下表示改进/恶化(很高兴)

我知道如何在 Excel 中创建它:

为两个数据集创建折线图 在图表的属性中,删除线条 根据需要插入并格式化上下栏

我已经设法在 Reporting Services 的布局视图中做到了这一点: http://img686.imageshack.us/img686/5730/layoutt.png

这是一个禁用趋势线的折线图。没有上行/下行,但这是可以接受的。

问题是,当我切换到预览/发布视图时,它变成了这样: http://img37.imageshack.us/img37/6824/previewyb.png

这些线条无缘无故出现。

我发布了一个较早(现已删除)的问题以征求这方面的建议,并收到了使用散点图的建议。但除非我遗漏了什么,否则散点图需要两个数字轴?当我尝试在“Y 值”字段上删除“比率”值时,我收到错误“值不能为空。参数名称:值”(没有报告参数“值”。)它似乎也没有能够在一个轴上有两个数据集?

那么,我该怎么办?有没有办法让趋势线在预览/发布视图中消失?或者,有没有办法让散点图来做我想要的?或者其他一些可以简单地做到这一点的图表?

编辑:这是在 Reporting Services 2005 中,所以你知道。

【问题讨论】:

2005.对不起,应该说。 【参考方案1】:

RDL 下面。我只是使用一切的默认值。出于某种原因,我不得不为图表设置颜色以显示任何内容。而且您还必须填写高点和低点。我只是输入了开盘价和收盘价的平均值,所以它们没有显示。

编辑:修改为包括十字架和菱形。我将一个新系列的所有值设置为去年,然后只打开标记。然后我今年又做了同样的事情。它们的位置似乎并不理想,但这是我能做的最好的。

<?xml version="1.0" encoding="utf-8"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
  <DataSources>
    <DataSource Name="DataSource1">
      <rd:DataSourceID>892866e1-c006-4497-9545-251d2a43feb0</rd:DataSourceID>
      <ConnectionProperties>
        <DataProvider>SQL</DataProvider>
        <ConnectString>Data Source=rover4;Initial Catalog=master</ConnectString>
        <IntegratedSecurity>true</IntegratedSecurity>
      </ConnectionProperties>
    </DataSource>
  </DataSources>
  <InteractiveHeight>29.7cm</InteractiveHeight>
  <rd:DrawGrid>true</rd:DrawGrid>
  <InteractiveWidth>21cm</InteractiveWidth>
  <rd:GridSpacing>0.25cm</rd:GridSpacing>
  <rd:SnapToGrid>true</rd:SnapToGrid>
  <RightMargin>2.5cm</RightMargin>
  <LeftMargin>2.5cm</LeftMargin>
  <BottomMargin>2.5cm</BottomMargin>
  <rd:ReportID>55a6b44d-b38d-4f58-b9bf-fd26c6f80e4a</rd:ReportID>
  <PageWidth>21cm</PageWidth>
  <DataSets>
    <DataSet Name="master">
      <Fields>
        <Field Name="codename">
          <DataField>codename</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
        <Field Name="thisyear">
          <DataField>thisyear</DataField>
          <rd:TypeName>System.Int32</rd:TypeName>
        </Field>
        <Field Name="lastyear">
          <DataField>lastyear</DataField>
          <rd:TypeName>System.Int32</rd:TypeName>
        </Field>
      </Fields>
      <Query>
        <DataSourceName>DataSource1</DataSourceName>
        <CommandText>Select 'code1'  as codename, 45 as thisyear, 46 as lastyear
union
Select 'code2'  as codename, 42 as thisyear, 55 as lastyear
union
Select 'code3'  as codename, 57 as thisyear, 40 as lastyear
union
Select 'code4'  as codename, 10 as thisyear, 11 as lastyear</CommandText>
        <rd:UseGenericDesigner>true</rd:UseGenericDesigner>
      </Query>
    </DataSet>
  </DataSets>
  <Width>16cm</Width>
  <Body>
    <ColumnSpacing>1cm</ColumnSpacing>
    <ReportItems>
      <Chart Name="chart1">
        <Legend>
          <Style>
            <BorderStyle>
              <Default>Solid</Default>
            </BorderStyle>
          </Style>
          <Position>RightCenter</Position>
        </Legend>
        <CategoryAxis>
          <Axis>
            <Title />
            <MajorGridLines>
              <Style>
                <BorderStyle>
                  <Default>Solid</Default>
                </BorderStyle>
              </Style>
            </MajorGridLines>
            <MinorGridLines>
              <Style>
                <BorderStyle>
                  <Default>Solid</Default>
                </BorderStyle>
              </Style>
            </MinorGridLines>
            <MajorTickMarks>Outside</MajorTickMarks>
            <Min>0</Min>
            <Visible>true</Visible>
          </Axis>
        </CategoryAxis>
        <DataSetName>master</DataSetName>
        <PlotArea>
          <Style>
            <BackgroundColor>LightGrey</BackgroundColor>
            <BorderStyle>
              <Default>Solid</Default>
            </BorderStyle>
          </Style>
        </PlotArea>
        <ThreeDProperties>
          <Rotation>30</Rotation>
          <Inclination>30</Inclination>
          <Shading>Simple</Shading>
          <WallThickness>50</WallThickness>
        </ThreeDProperties>
        <PointWidth>0</PointWidth>
        <SeriesGroupings>
          <SeriesGrouping>
            <StaticSeries>
              <StaticMember>
                <Label>Value2</Label>
              </StaticMember>
              <StaticMember>
                <Label>This year markers</Label>
              </StaticMember>
              <StaticMember>
                <Label>last year markers</Label>
              </StaticMember>
            </StaticSeries>
          </SeriesGrouping>
        </SeriesGroupings>
        <Top>0.25cm</Top>
        <Subtype>Candlestick</Subtype>
        <ValueAxis>
          <Axis>
            <Title />
            <MajorGridLines>
              <ShowGridLines>true</ShowGridLines>
              <Style>
                <BorderStyle>
                  <Default>Solid</Default>
                </BorderStyle>
              </Style>
            </MajorGridLines>
            <MinorGridLines>
              <Style>
                <BorderStyle>
                  <Default>Solid</Default>
                </BorderStyle>
              </Style>
            </MinorGridLines>
            <MajorTickMarks>Outside</MajorTickMarks>
            <Min>0</Min>
            <Max>100</Max>
            <Margin>true</Margin>
            <Visible>true</Visible>
            <Scalar>true</Scalar>
          </Axis>
        </ValueAxis>
        <Type>Stock</Type>
        <Width>15cm</Width>
        <CategoryGroupings>
          <CategoryGrouping>
            <DynamicCategories>
              <Grouping Name="chart1_CategoryGroup1">
                <GroupExpressions>
                  <GroupExpression>=Fields!codename.Value</GroupExpression>
                </GroupExpressions>
              </Grouping>
              <Label>=Fields!codename.Value</Label>
            </DynamicCategories>
          </CategoryGrouping>
        </CategoryGroupings>
        <Palette>Default</Palette>
        <ChartData>
          <ChartSeries>
            <DataPoints>
              <DataPoint>
                <DataValues>
                  <DataValue>
                    <Value>=(Fields!thisyear.Value+Fields!lastyear.Value)/2</Value>
                  </DataValue>
                  <DataValue>
                    <Value>=(Fields!thisyear.Value+Fields!lastyear.Value)/2</Value>
                  </DataValue>
                  <DataValue>
                    <Value>=Sum(Fields!lastyear.Value)</Value>
                  </DataValue>
                  <DataValue>
                    <Value>=Sum(Fields!thisyear.Value)</Value>
                  </DataValue>
                </DataValues>
                <DataLabel />
                <Style>
                  <BackgroundColor>SandyBrown</BackgroundColor>
                  <BackgroundGradientEndColor>Lime</BackgroundGradientEndColor>
                  <BorderColor>
                    <Default>Red</Default>
                  </BorderColor>
                </Style>
                <Marker>
                  <Size>6pt</Size>
                </Marker>
              </DataPoint>
            </DataPoints>
          </ChartSeries>
          <ChartSeries>
            <DataPoints>
              <DataPoint>
                <DataValues>
                  <DataValue>
                    <Value>=Sum(Fields!thisyear.Value)</Value>
                  </DataValue>
                  <DataValue>
                    <Value>=Sum(Fields!thisyear.Value)</Value>
                  </DataValue>
                  <DataValue>
                    <Value>=Sum(Fields!thisyear.Value)</Value>
                  </DataValue>
                  <DataValue>
                    <Value>=Sum(Fields!thisyear.Value)</Value>
                  </DataValue>
                </DataValues>
                <DataLabel />
                <Style />
                <Marker>
                  <Type>Diamond</Type>
                  <Size>6pt</Size>
                </Marker>
              </DataPoint>
            </DataPoints>
          </ChartSeries>
          <ChartSeries>
            <DataPoints>
              <DataPoint>
                <DataValues>
                  <DataValue>
                    <Value>=Sum(Fields!lastyear.Value)</Value>
                  </DataValue>
                  <DataValue>
                    <Value>=Sum(Fields!lastyear.Value)</Value>
                  </DataValue>
                  <DataValue>
                    <Value>=Sum(Fields!lastyear.Value)</Value>
                  </DataValue>
                  <DataValue>
                    <Value>=Sum(Fields!lastyear.Value)</Value>
                  </DataValue>
                </DataValues>
                <DataLabel />
                <Style />
                <Marker>
                  <Type>Cross</Type>
                  <Size>6pt</Size>
                </Marker>
              </DataPoint>
            </DataPoints>
          </ChartSeries>
        </ChartData>
        <Style>
          <BackgroundColor>White</BackgroundColor>
        </Style>
        <Title />
        <Left>0.5cm</Left>
      </Chart>
    </ReportItems>
    <Height>10.36905cm</Height>
  </Body>
  <Language>en-US</Language>
  <TopMargin>2.5cm</TopMargin>
  <PageHeight>29.7cm</PageHeight>
</Report>

【讨论】:

出于好奇,有没有什么方法可以包括 Xs 和 Os 或今年与去年的对比?我玩弄了这些设置,并没有看到任何明显的东西......

以上是关于Reporting Services 中的复杂图表?的主要内容,如果未能解决你的问题,请参考以下文章

Reporting Services 2005 中的适当图表缩放

使用 Reporting Services 学习图表的书籍/资源推荐 [关闭]

Reporting Services 2005 - 打印图表 - 打印过程中出错。 (0x80004005)

饼图仅显示一个数据标签 - SQL Server Reporting Services

双轴图 - Reporting Services 2005

如何添加筛选器 (Reporting Services)