2011-01-20 36 views
6

SQL Server Reporting Services RDLCレポートで親子孫関係を表現しようとしています。レポートは、WPFアプリケーションでホストされているレポートビューアコントロールにレンダリングされます。私はIEnumberable <に基づいてCLRデータセットを使用しており、レポートビューアのデータソースをVMのデータセットにバインドしています。RDLCサブレポートの改ページが表示されない

子エンティティの各表示を新しいページ(およびデータセット内に十分な孫がある場合はスパンページ)に表示します。

現在のところ、親エンティティのマスターレポート、子のサブレポート、グランド子供の別のサブレポートがあります。

各レポートでは、Tablixを使用してページ上の対応するCLRクラスのフィールドをレイアウトしています。 子サブレポートのTablixにグループを割り当て、PageBreaksをStartAndEndに設定しました(つまり、Group Propertiesダイアログで3つのチェックボックスがすべて選択されています)。

私はそれを見つけることができますどこでも一緒に維持してオフにしました。

残念ながら、印刷レイアウトモードでレポートを表示したり、PDFとサブレポートの子アイテムをすべて区切りを付けずに一緒にフローすると、ページ区切りは無視されます。

私はSOとMSDNで望ましくないページ区切りについて話していますが、ページ区切りの不足に関する議論はありませんでした。

誰かがサブレポートに改ページを強制する方法を知っていますか? サブレポートを使用せずに親/子データをこのように表現する方が良い/代替方法がありますか?

ありがとうございました。

親レポート:

 <TablixRow> 
      <Height>0.25in</Height> 
      <TablixCells> 
      <TablixCell> 
       <CellContents> 
       <Rectangle Name="Rectangle1"> 
        <ReportItems> 
        <Subreport Name="InvoicePageDetail"> 
         <ReportName>InvoicePageDetail</ReportName> 
         <Parameters> 
         <Parameter Name="InvoiceID"> 
          <Value>=Fields!InvoiceID.Value</Value> 
         </Parameter> 
         <Parameter Name="CustID"> 
          <Value>=Fields!CustID.Value</Value> 
         </Parameter> 
         </Parameters> 
         <Height>0.25in</Height> 
         <Width>6.4in</Width> 
         <Style> 
         <Border> 
          <Style>None</Style> 
         </Border> 
         </Style> 
        </Subreport> 
        </ReportItems> 
        <PageBreak> 
        <BreakLocation>End</BreakLocation> 
        </PageBreak> 
       </Rectangle> 
       <ColSpan>3</ColSpan> 
       </CellContents> 
      </TablixCell> 
      <TablixCell /> 
      <TablixCell /> 
      </TablixCells> 
     </TablixRow> 

サブレポート:

<?xml version="1.0" encoding="utf-8"?> 
<Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition"> 
    <DataSources> 
    <DataSource Name="ISCBillingDataModel"> 
     <ConnectionProperties> 
     <DataProvider>System.Data.DataSet</DataProvider> 
     <ConnectString>/* Local Connection */</ConnectString> 
     </ConnectionProperties> 
     <rd:DataSourceID>50ce54a7-32e3-46df-bd7c-97f194ba4390</rd:DataSourceID> 
    </DataSource> 
    </DataSources> 
    <DataSets> snip... 
    </DataSets> 
    <Body> 
    <ReportItems> 
     <Tablix Name="Tablix1"> 
     <TablixBody> 
      <TablixColumns> snip... 
      </TablixColumns> 
      <TablixRows> 
      <TablixRow> 
       <Height>0.25in</Height> 
       <TablixCells> 
       <TablixCell> 
        <CellContents> 
        <Subreport Name="InvoiceFixedFeeDetail"> 
         <ReportName>InvoiceFixedFeeDetail</ReportName> 
         <Parameters> 
         <Parameter Name="InvoicePageID"> 
          <Value>=Fields!InvoicePageID.Value</Value> 
         </Parameter> 
         </Parameters> 
         <Style> 
         <Border> 
          <Style>None</Style> 
         </Border> 
         </Style> 
        </Subreport> 
        <ColSpan>3</ColSpan> 
        </CellContents> 
       </TablixCell> 
       <TablixCell /> 
       <TablixCell /> 
       </TablixCells> 
      </TablixRow> 
      </TablixRows> 
     </TablixBody> 
     <TablixColumnHierarchy> 
      <TablixMembers> 
      <TablixMember /> 
      <TablixMember /> 
      <TablixMember /> 
      </TablixMembers> 
     </TablixColumnHierarchy> 
     <TablixRowHierarchy> 
      <TablixMembers> 
      <TablixMember> 
       <Group Name="Group1"> 
       <GroupExpressions> 
        <GroupExpression>=Fields!InvoicePageID.Value</GroupExpression> 
       </GroupExpressions> 
       <PageBreak> 
        <BreakLocation>StartAndEnd</BreakLocation> 
       </PageBreak> 
       </Group> 
       <SortExpressions> 
       <SortExpression> 
        <Value>=Fields!InvoicePageID.Value</Value> 
       </SortExpression> 
       </SortExpressions> 
       <TablixHeader> 
       <Size>0.03125in</Size> 
       <CellContents> 
        <Textbox Name="Textbox11"> 
        <CanGrow>true</CanGrow> 
        <CanShrink>true</CanShrink> 
        <KeepTogether>true</KeepTogether> 
        <Paragraphs> 
         <Paragraph> 
         <TextRuns> 
          <TextRun> 
          <Value /> 
          <Style /> 
          </TextRun> 
         </TextRuns> 
         <Style /> 
         </Paragraph> 
        </Paragraphs> 
        <rd:DefaultName>Textbox11</rd:DefaultName> 
        <Style> 
         <Border> 
         <Color>LightGrey</Color> 
         <Style>None</Style> 
         </Border> 
        </Style> 
        </Textbox> 
       </CellContents> 
       </TablixHeader> 
       <TablixMembers> 
       <TablixMember> 
        <Group Name="Details"> 
        <PageBreak> 
         <BreakLocation>StartAndEnd</BreakLocation> 
        </PageBreak> 
        </Group> 
        <TablixMembers> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        <TablixMember /> 
        </TablixMembers> 
       </TablixMember> 
       </TablixMembers> 
      </TablixMember> 
      </TablixMembers> 
     </TablixRowHierarchy> 
     <DataSetName>pages</DataSetName> 
     <PageBreak> 
      <BreakLocation>Start</BreakLocation> 
     </PageBreak> 
     <Height>3.45in</Height> 
     <Width>6.38125in</Width> 
     <Style> 
      <Border> 
      <Style>None</Style> 
      </Border> 
     </Style> 
     </Tablix> 
    </ReportItems> 
    <Height>3.6in</Height> 
    <Style> 
     <Border> 
     <Color>Green</Color> 
     <Style>None</Style> 
     </Border> 
    </Style> 
    </Body> 
    <ReportParameters> 
    <ReportParameter Name="InvoiceID"> 
     <DataType>Integer</DataType> 
     <Prompt>ReportParameter1</Prompt> 
    </ReportParameter> 
    <ReportParameter Name="CustID"> 
     <DataType>String</DataType> 
     <Prompt>ReportParameter1</Prompt> 
    </ReportParameter> 
    </ReportParameters> 
    <Width>6.43125in</Width> 
    <Page> 
    <LeftMargin>1in</LeftMargin> 
    <RightMargin>1in</RightMargin> 
    <TopMargin>1in</TopMargin> 
    <BottomMargin>1in</BottomMargin> 
    <Style /> 
    </Page> 
    <rd:ReportID>a360303c-713c-4baf-b9ce-32ae0997c855</rd:ReportID> 
    <rd:ReportUnitType>Inch</rd:ReportUnitType> 
</Report> 
+0

奨励賞金をいただきありがとうございます。あなたは同様の問題を経験していますか?これまでのところ、私が思いつくことができる唯一の答えは、データセットを完全に標準化解除することです。私はまだ誰かがより良い答えを提案できることを望んでいます。 –

+0

私は同様の問題に遭遇しました。私は同じ種類の回避策を使用しました。ここに誰かが良いアイデアを持っていることを望んでいる。 – jball

答えて

0

私が持っている

FWIWは、以下のrelaventかもしれないRDLCのいくつか抜粋しています部分的な答えですが、それはハックIMOのようです。この質問をしばらく開いたままにして、誰かがより良い回答を提案できるかどうかを確認します。

欲しい箇所に改ページを強制するために、CLRを非正規化することでネストされたサブレポートを削除しました主なレポートを推進していたデータセット。次に、メインレポートで行グループを使用してページレイアウトを有効にし、RDLC xmlの次の設定に相当する[グループプロパティ]ダイアログの[ページ区切り]タブの[各インスタンス間]と[開始時にも]のチェックボックスを設定しました:

  <PageBreak> 
       <BreakLocation>Start</BreakLocation> 
      </PageBreak> 

Iは、線の列レイアウト請求書ヘッダーまたは請求書ページレベルでより有意に異なるためグラン子エンティティ(請求書ライン)独自のデータセットとサブレポートに出て正規化し続けました。


これは目的のレイアウトを生成しますが、データセットの非正規化が嫌いなのでこの答えには完全に満足していません。DataElementNameがどのように機能し、より良い解決策が得られるかどうかを調べたいと思います。

代替回答をお待ちしております。

+1

FWIW、DataElementNameはこの問題とは無関係です。ドキュメントごとに、DataElementNameは、XMLにエクスポートしてデータをマークアップするために使用されるタグ名を定義するときに使用されます。まだ誰かが私に良い答えを与えることを望んでいます。 –

関連する問題