2009-12-22 2 views
0

Я пытаюсь имитировать этот график, или получить как можно ближе, насколько это возможно:Комплексный график в службах Reporting Services?

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

Особенности:

  • коды на дне (нужно иметь)
  • Оценить на (необходимо иметь)
  • И набор данных в этом году и набор данных за прошлый год (необходимо иметь)
  • Up-bars и downbars для указания улучшение/ухудшение (Хорошо иметь)

Я знаю, как создать его в Excel:

  • Создать линейный график для двух наборов данных
  • В свойствах графа, удалить строки
  • Вставьте затем форматирование верхних и нижних баров в зависимости от ситуации

Мне удалось установить это в представлении макета служб Reporting Services: http://img686.imageshack.us/img686/5730/layoutt.png

Это линейный график с отключенными линиями тренда. Нет up-bars/down-bars, но это приемлемо.

Проблема заключается в том, когда я переключаюсь Preview/Опубликовать вид, это то, что она становится: http://img37.imageshack.us/img37/6824/previewyb.png

линии все появляются без видимой причины.

Я отправил более ранний (сейчас удаленный) вопрос на консультацию по этому вопросу и получил предложение использовать график рассеяния. Но разве я чего-то не хватает, граф рассеяния требует двух числовых осей? Когда я пытаюсь сбросить значение «Rate» в поле «Y value», я получаю сообщение об ошибке «Значение не может быть null. Имя параметра: значение» (Нет параметра отчета «Значение».) Это также не кажется чтобы иметь две наборы данных на одной оси?

Итак, что мне делать? Есть ли способ заставить линии тренда уйти в предварительном просмотре/публикации? В качестве альтернативы, есть ли какой-то способ получить участки рассеяния, чтобы делать то, что мне нужно? Или какой-нибудь другой график, который бы сделал это просто?

EDIT: Это в Reporting Services 2005, так что вы знаете.

+0

RS 2005 или 2008? – jimconstable

+0

2005. К сожалению, следовало бы сказать. – Margaret

ответ

1

RDL ниже. Я просто использую умолчания обо всем. По какой-то причине мне пришлось установить цвета для графика, чтобы показать что-нибудь. И вы должны заполнить как высокие, так и низкие. Я просто положил среднее число открытых и закрытых, чтобы они не показывались.

EDIT: модифицировано для включения крестов и бриллиантов. Я установил все значения новой серии в lastyear, а затем включил только маркеры. Затем я сделал то же самое снова для этого года. Кажется, они не позиционируются идеально, но это лучшее, что я мог бы сделать.

<?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> 
+0

Из любопытства, есть ли способ включить Xs и Os или что-то, чтобы указать в этом году против прошлого года?Я играл с настройками и не видел ничего очевидного ... – Margaret

+0

отредактирован, чтобы включить Xs и 0s – jimconstable

Смежные вопросы