SSRS: "Индекс был вне допустимого диапазона" в VS2010, но не при развертывании отчета - программирование
Подтвердить что ты не робот

SSRS: "Индекс был вне допустимого диапазона" в VS2010, но не при развертывании отчета

У меня есть простой отчет, который продолжает бросать ошибку "index out out range", когда я пытаюсь просмотреть отчет в VS. когда я развертываю отчет в SSRS, он работает отлично. Я полностью искал ответ, но ни один из них, похоже, не применим к моей ситуации.

Ошибка: индекс был вне допустимого диапазона. Должен быть неотрицательным и меньше размера коллекции. Имя параметра: индекс.

<?xml version="1.0" encoding="utf-8"?>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
  <Body>
    <ReportItems>
      <Textbox Name="textbox1">
        <CanGrow>true</CanGrow>
        <KeepTogether>true</KeepTogether>
        <Paragraphs>
          <Paragraph>
            <TextRuns>
              <TextRun>
                <Value>Sales Report</Value>
                <Style>
                  <FontFamily>Tahoma</FontFamily>
                  <FontSize>20pt</FontSize>
                  <FontWeight>Bold</FontWeight>
                  <Color>SteelBlue</Color>
                </Style>
              </TextRun>
            </TextRuns>
            <Style />
          </Paragraph>
        </Paragraphs>
        <rd:DefaultName>textbox1</rd:DefaultName>
        <Height>0.36in</Height>
        <Width>7.5in</Width>
        <Style>
          <PaddingLeft>2pt</PaddingLeft>
          <PaddingRight>2pt</PaddingRight>
          <PaddingTop>2pt</PaddingTop>
          <PaddingBottom>2pt</PaddingBottom>
        </Style>
      </Textbox>
      <Tablix Name="Tablix1">
        <TablixCorner>
          <TablixCornerRows>
            <TablixCornerRow>
              <TablixCornerCell>
                <CellContents>
                  <Textbox Name="Textbox5">
                    <CanGrow>true</CanGrow>
                    <KeepTogether>true</KeepTogether>
                    <Paragraphs>
                      <Paragraph>
                        <TextRuns>
                          <TextRun>
                            <Value>Sales Person</Value>
                            <Style />
                          </TextRun>
                        </TextRuns>
                        <Style />
                      </Paragraph>
                    </Paragraphs>
                    <rd:DefaultName>Textbox5</rd:DefaultName>
                    <Style>
                      <Border>
                        <Color>LightGrey</Color>
                        <Style>Solid</Style>
                      </Border>
                      <PaddingLeft>2pt</PaddingLeft>
                      <PaddingRight>2pt</PaddingRight>
                      <PaddingTop>2pt</PaddingTop>
                      <PaddingBottom>2pt</PaddingBottom>
                    </Style>
                  </Textbox>
                </CellContents>
              </TablixCornerCell>
            </TablixCornerRow>
          </TablixCornerRows>
        </TablixCorner>
        <TablixBody>
          <TablixColumns>
            <TablixColumn>
              <Width>1.35417in</Width>
            </TablixColumn>
          </TablixColumns>
          <TablixRows>
            <TablixRow>
              <Height>0.25in</Height>
              <TablixCells>
                <TablixCell>
                  <CellContents>
                    <Textbox Name="Textbox4">
                      <CanGrow>true</CanGrow>
                      <KeepTogether>true</KeepTogether>
                      <Paragraphs>
                        <Paragraph>
                          <TextRuns>
                            <TextRun>
                              <Value>=SUM(Fields!Amount.Value * Fields!ExchangeRate.Value)</Value>
                              <Style>
                                <Format>0.##</Format>
                              </Style>
                            </TextRun>
                          </TextRuns>
                          <Style />
                        </Paragraph>
                      </Paragraphs>
                      <rd:DefaultName>Textbox4</rd:DefaultName>
                      <Style>
                        <Border>
                          <Color>LightGrey</Color>
                          <Style>Solid</Style>
                        </Border>
                        <PaddingLeft>2pt</PaddingLeft>
                        <PaddingRight>2pt</PaddingRight>
                        <PaddingTop>2pt</PaddingTop>
                        <PaddingBottom>2pt</PaddingBottom>
                      </Style>
                    </Textbox>
                  </CellContents>
                </TablixCell>
              </TablixCells>
            </TablixRow>
          </TablixRows>
        </TablixBody>
        <TablixColumnHierarchy>
          <TablixMembers>
            <TablixMember>
              <Group Name="Year">
                <GroupExpressions>
                  <GroupExpression>=Fields!Year.Value</GroupExpression>
                  <GroupExpression>=Fields!Month.Value</GroupExpression>
                </GroupExpressions>
              </Group>
              <SortExpressions>
                <SortExpression>
                  <Value>=Fields!Year.Value</Value>
                </SortExpression>
              </SortExpressions>
              <TablixHeader>
                <Size>0.28125in</Size>
                <CellContents>
                  <Textbox Name="Year">
                    <CanGrow>true</CanGrow>
                    <KeepTogether>true</KeepTogether>
                    <Paragraphs>
                      <Paragraph>
                        <TextRuns>
                          <TextRun>
                            <Value>=MonthName(Fields!Month.Value, True) &amp; " " &amp; Fields!Year.Value</Value>
                            <Style>
                              <Format>0.##</Format>
                            </Style>
                          </TextRun>
                        </TextRuns>
                        <Style />
                      </Paragraph>
                    </Paragraphs>
                    <rd:DefaultName>Year</rd:DefaultName>
                    <Style>
                      <Border>
                        <Color>LightGrey</Color>
                        <Style>Solid</Style>
                      </Border>
                      <PaddingLeft>2pt</PaddingLeft>
                      <PaddingRight>2pt</PaddingRight>
                      <PaddingTop>2pt</PaddingTop>
                      <PaddingBottom>2pt</PaddingBottom>
                    </Style>
                  </Textbox>
                </CellContents>
              </TablixHeader>
            </TablixMember>
          </TablixMembers>
        </TablixColumnHierarchy>
        <TablixRowHierarchy>
          <TablixMembers>
            <TablixMember>
              <Group Name="RowGroup">
                <GroupExpressions>
                  <GroupExpression>=Fields!SalesPerson.Value</GroupExpression>
                </GroupExpressions>
              </Group>
              <TablixHeader>
                <Size>1.26042in</Size>
                <CellContents>
                  <Textbox Name="SalesPerson">
                    <CanGrow>true</CanGrow>
                    <KeepTogether>true</KeepTogether>
                    <Paragraphs>
                      <Paragraph>
                        <TextRuns>
                          <TextRun>
                            <Value>=Fields!SalesPerson.Value</Value>
                            <Style />
                          </TextRun>
                        </TextRuns>
                        <Style />
                      </Paragraph>
                    </Paragraphs>
                    <rd:DefaultName>SalesPerson</rd:DefaultName>
                    <Style>
                      <Border>
                        <Color>LightGrey</Color>
                        <Style>Solid</Style>
                      </Border>
                      <PaddingLeft>2pt</PaddingLeft>
                      <PaddingRight>2pt</PaddingRight>
                      <PaddingTop>2pt</PaddingTop>
                      <PaddingBottom>2pt</PaddingBottom>
                    </Style>
                  </Textbox>
                </CellContents>
              </TablixHeader>
            </TablixMember>
          </TablixMembers>
        </TablixRowHierarchy>
        <DataSetName>SalesLines</DataSetName>
        <Top>0.42944in</Top>
        <Height>0.53125in</Height>
        <Width>2.61459in</Width>
        <ZIndex>1</ZIndex>
        <Style>
          <Border>
            <Style>None</Style>
          </Border>
        </Style>
      </Tablix>
    </ReportItems>
    <Height>0.96069in</Height>
    <Style />
  </Body>
  <Width>8in</Width>
  <Page>
    <PageHeight>8.5in</PageHeight>
    <PageWidth>11in</PageWidth>
    <LeftMargin>1in</LeftMargin>
    <RightMargin>1in</RightMargin>
    <TopMargin>1in</TopMargin>
    <BottomMargin>1in</BottomMargin>
    <Style />
  </Page>
  <AutoRefresh>0</AutoRefresh>
  <DataSources>
    <DataSource Name="Reporting">
      <DataSourceReference>Reporting</DataSourceReference>
      <rd:SecurityType>None</rd:SecurityType>
      <rd:DataSourceID>aab21363-546f-4445-8789-9975de5d56bf</rd:DataSourceID>
    </DataSource>
  </DataSources>
  <DataSets>
    <DataSet Name="SalesLines">
      <Query>
        <DataSourceName>Reporting</DataSourceName>
        <CommandText>SELECT SalesPerson, exchangeRate, Amount, Year(PostingDate) AS [Year], Month(PostingDate) AS [Month] FROM [dbo].[ReportingSalesLines]
WHERE PostingDate BETWEEN '2012-10-01' AND '2013-09-30'</CommandText>
        <rd:UseGenericDesigner>true</rd:UseGenericDesigner>
      </Query>
      <Fields>
        <Field Name="ExchangeRate">
          <DataField>exchangeRate</DataField>
          <rd:TypeName>System.Decimal</rd:TypeName>
        </Field>
        <Field Name="SalesPerson">
          <DataField>SalesPerson</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
        <Field Name="Amount">
          <DataField>Amount</DataField>
          <rd:TypeName>System.Decimal</rd:TypeName>
        </Field>
        <Field Name="Year">
          <DataField>Year</DataField>
          <rd:TypeName>System.Int32</rd:TypeName>
        </Field>
        <Field Name="Month">
          <DataField>Month</DataField>
          <rd:TypeName>System.Int32</rd:TypeName>
        </Field>
      </Fields>
    </DataSet>
  </DataSets>
  <Language>en-US</Language>
  <ConsumeContainerWhitespace>true</ConsumeContainerWhitespace>
  <rd:ReportUnitType>Inch</rd:ReportUnitType>
  <rd:ReportID>7d9922c6-e37f-4826-b58e-bd8b9427da1c</rd:ReportID>
</Report>
4b9b3361

Ответ 1

Я видел, как это произошло, когда DataSet изменил свое определение, но фактические кэшированные данные, хранящиеся в Visual Studio (т.е. файл *.rdl.data), все еще содержат данные на основе старого определения набора данных; это внутренняя ошибка, вызванная несоответствием данных, ожидаемых от отчета, и того, что было кэшировано.

Чтобы устранить эту проблему, удалите все файлы *.rdl.data из решения для отчетов, затем повторите предварительный просмотр.

Вот почему отчет отлично работает при развертывании - отчет генерирует новые данные при запуске, поэтому нет никакого несоответствия с любыми кэшированными данными.

A Rebuild Solution команда в VS также может потребоваться.

Ответ 2

У меня это случалось несколько раз по разным причинам, но в последнее время просто снятие флажка "держаться вместе на одной странице, если возможно" в разделе параметров разрыва страницы, для очень большой табло фиксированной.

Ответ 3

Это случилось со мной, и я закончил тем, что потратил несколько часов на это. Вот одна из действительно полезных ссылок, которые я узнал. В моем случае проблема исчезла, когда я перезапустил свой компьютер

Ответ 4

В случае, если кто-либо сталкивается с этой проблемой, у меня была та же проблема, но более широкий поиск в Интернете предположил, что это может быть проблема с пробелами в дизайне отчета (я получал ту же проблему с отчетом, опубликованным в Sharepoint, который, я считаю, не кэширует данные в файл .rdl.data.

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

Я все еще не уверен, какие именно из этих действий вылечили его, но общий порядок и удаление ненужных пробелов оказались для меня трюком.

Ответ 5

Имела ту же проблему, но ни один из вышеперечисленных не исправил ее для меня.

Проблема для меня была вызвана параметром, который был заполнен набором данных, и его значение по умолчанию было неправильно установлено. По умолчанию было "Все", которое в моем случае выглядело так:

\[Sender Analytical Structure\].\[Business Unit Name\].&\[All\]