2011-01-20 29 views
6

Estoy intentando representar una relación padre-hijo-nieto en un informe RDLC de SQL Server Reporting Services. El informe se procesa en un control de visor de informes alojado en una aplicación de WPF. Estoy usando un conjunto de datos CLR basado en IEnumberable <> y vinculando las fuentes de datos del reporter a mis conjuntos de datos en una máquina virtual.Saltos de página en subinformes de RDLC no aparecen

Quiero que cada entidad hija se muestre en una página nueva (y las páginas se expanden si hay bastantes nietos en el conjunto de datos).

Actualmente tengo un informe maestro para la entidad principal, un subinforme para el niño y otro subinforme para los nietos.

Cada informe está utilizando un Tablix para diseñar los campos de la clase CLR correspondiente en la página. He asignado un grupo en el Tablix del subinforme del niño y he configurado las divisiones de página en StartAndEnd (es decir, las 3 casillas de verificación están seleccionadas en el cuadro de diálogo Propiedades del grupo).

Me he apagado, manténganse juntos en todas partes donde pueda encontrarlo.

Desafortunadamente, los saltos de página se ignoran cuando veo el informe en el modo Diseño de impresión, o exporto a PDF y los elementos secundarios en el subinforme fluyen juntos sin saltos de página que los separan.

He visto varios problemas en SO y MSDN hablando de saltos de página no deseados, pero no he encontrado ninguna discusión sobre saltos de página faltantes.

¿Alguien sabe cómo forzar que los saltos de página aparezcan en los subinformes? Si no es así, ¿existe una forma mejor/alternativa de representar datos de padres/hijos como este sin utilizar un subinforme?

Gracias por cualquier información que pueda ofrecer.

Fwiw, siguientes son algunos extractos de la RDLC que podría ser relavent:

Padres Informe:

 <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> 

Sub Informe:

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

Gracias por el bounty jball. ¿Estás experimentando un problema similar? Hasta ahora, la única respuesta que se me ocurre es desnormalizar completamente el conjunto de datos. Todavía estoy esperando que alguien pueda sugerir una mejor respuesta. –

+0

Tuve un problema similar y terminé con el mismo tipo de solución que usaste. Aquí está la esperanza de que alguien tenga una mejor idea. – jball

Respuesta

0

tengo una respuesta parcial, pero parece un truco IMO. Dejaré esta pregunta abierta por un tiempo para ver si alguien puede sugerir una mejor respuesta ...

Para forzar que los saltos de página aparezcan donde yo los quería, eliminé los subinformes anidados desnormalizando el CLR conjunto de datos que estaba impulsando el informe principal. Luego utilicé grupos de filas en el informe principal para efectuar el diseño de la página y establecí las casillas de verificación "Entre cada instancia" y "También al inicio" en la pestaña Saltos de página del cuadro de diálogo Propiedades del grupo equivalente a la siguiente configuración en el RDLC xml :

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

me quedé con la entidad grand-hijo (líneas de factura) normalizado a cabo en su propio conjunto de datos y sub-informe porque la disposición de las columnas de las líneas es significativamente diferente de a nivel de cabecera de la factura o de la página de la factura.


Mientras que esto produce el diseño deseado, no estoy del todo satisfecho con esta respuesta porque no me gusta la desnormalización del conjunto de datos.Quiero examinar cómo funciona DataElementName y si eso puede ofrecer una mejor solución.

Respuestas alternativas son bienvenidas

+1

FWIW, DataElementName es irrelevante para este problema. Según la documentación, DataElementName se usa al exportar a XML para definir el nombre de etiqueta utilizado para marcar los datos. Todavía espero que alguien me pueda dar una mejor respuesta. –

Cuestiones relacionadas