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) & " " & 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>
これは、DataSetがその定義を変更したが、Visual Studioによって保存された実際のキャッシュデータ(つまり、*.rdl.data
ファイル)に古いデータセット定義に基づくデータが残っている場合に発生することを確認しました。これは、レポートが期待しているデータとキャッシュされているデータの不一致が原因で発生する内部エラーです。
これを解決するには、レポートソリューションから*.rdl.data
ファイルを削除してから、プレビューを再試行してください。
これが、展開時にレポートが正常に機能する理由です。レポートは実行時に新しいデータを生成するため、キャッシュされたデータとの不一致はありません。
Rebuild Solution VSのコマンドも必要になる場合があります。
さまざまな理由でこれが何度か発生しましたが、最近、非常に大きなTablixの改ページオプションで[可能であれば1つのページにまとめる]のチェックを外すだけで修正されました。
これは私にも起こりました、そして私はそれに数時間を無駄にすることになりました。これは本当に役立つものの1つです リンク 私が見つけました。私の場合、PCを再起動すると問題は解消されました
同じ問題がありましたが、上記のどれも私のためにそれを修正しませんでした。
私にとっての問題は、データセットによって入力されたパラメーターが原因であり、そのデフォルト値が正しく設定されていませんでした。デフォルトは「すべて」で、私の場合は次のようになりました。
\[Sender Analytical Structure\].\[Business Unit Name\].&\[All\]
他の誰かがこの問題に遭遇した場合、私は同じ問題を抱えていましたが、インターネットのより広い検索はそれがレポートデザインの空白の問題である可能性があることを示唆しました(私はSharepointに公開されたレポートで同じ問題を抱えていました、それは私が信じていますデータを.rdl.data
ファイルにキャッシュしません。
したがって、私にとってはうまくいったように見える解決策は、空白をいじることです。私のレポートレイアウトでは、ネストされたテーブルを持つテーブルを使用しているため、空の行を整理し、行の高さを固定し、別々のテーブル間のギャップを埋めました。ヘッダーとフッターのサイズも縮小しました。
これらのアクションのどれがそれを解決したかはまだ正確にはわかりませんが、一般的な整理と不要な空白の削除が私のためにトリックを行うように見えました