19

我有一个简单的报告,当我尝试在 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>
4

5 回答 5

50

我已经看到当 DataSet 更改了其定义但 Visual Studio 存储的实际缓存数据(即*.rdl.data文件)仍然具有基于旧 Dataset 定义的数据时会发生这种情况;这是由于报告预期的数据与缓存的数据不匹配而导致的内部错误。

要解决此问题,请从报告解决方案中删除所有*.rdl.data文件,然后再次尝试预览。

这就是报告在部署时工作正常的原因 - 报告在运行时会生成新数据,因此不会与任何缓存数据不匹配。

可能还需要 VS 中的重建解决方案命令。

于 2013-10-18T16:15:24.530 回答
2

由于不同的原因,我已经多次发生这种情况,但最近只是在一个非常大的 tablix 的分页符选项下取消选中“如果可能,请保持在一页上”修复它。

于 2014-01-31T16:22:43.473 回答
1

这也发生在我身上,我最终浪费了几个小时。这是我发现的真正有用的链接之一。在我的情况下,当我重新启动我的电脑时问题消失了

于 2014-11-04T03:49:54.850 回答
0

万一其他人遇到这个问题,我也遇到了同样的问题,但是对互联网的更广泛搜索表明这可能是报告设计中的空白问题(我在发布到 Sharepoint 的报告中遇到了同样的问题,我相信不会将数据缓存到.rdl.data文件中。

所以似乎对我有用的解决方案就是乱用空格。我的报表布局使用带有嵌套表格的表格,因此我整理了空行,固定了行高,并封闭了单独表格之间的间隙。我还减小了页眉和页脚的大小。

我仍然不确定这些动作中的哪一个可以治愈它,但是一般的整理和删除不必要的空格似乎对我有用

于 2013-12-03T16:47:34.463 回答
0

有同样的问题,但以上都没有为我解决。

对我来说,问题是由数据集填充的参数引起的,其默认值未正确设置。默认值为“全部”,在我的情况下如下所示:

\[Sender Analytical Structure\].\[Business Unit Name\].&\[All\]
于 2017-04-27T06:52:13.197 回答