Magazine

[Report] Décortiquer un report avec XML

Publié le 25 mars 2009 par Jeremy.jeanson

Après pas mal de temps passé dans les report, j’ai été pris d’une bien étrange idée : les ouvrir comme étant des fichiers XML… si si c’es possible. En prenant son éditeur XML favori… et là comme à l’accoutumé, vive Visual Studio ;).

Quand on ouvre un report (*.rdlc) on va trouver plusieurs sections après les entêtes XML

1 ) les sources de données : Très pratique si on n’est plus trop certain de ce que l’on a mémorisé via le Designer

<DataSources>
	<DataSource Name="DummyDataSource">
      <rd:DataSourceID>3248e8bd-7d84-4061-8c5f-6d8ac734230c</rd:DataSourceID>
      <ConnectionProperties>
        <DataProvider>SQL</DataProvider>
        <ConnectString />
      </ConnectionProperties>
    </DataSource>
	...
</DataSources>

2) Les démentions du Report, ses marges, sa langue… etc…

  <InteractiveHeight>29.7cm</InteractiveHeight>
  <rd:DrawGrid>true</rd:DrawGrid>
  <InteractiveWidth>21cm</InteractiveWidth>
  <rd:GridSpacing>0.25cm</rd:GridSpacing>
  <rd:SnapToGrid>true</rd:SnapToGrid>
  <RightMargin>1.25cm</RightMargin>
  <LeftMargin>1.25cm</LeftMargin>
  <BottomMargin>1.25cm</BottomMargin>
  <rd:ReportID>760b3441-2f24-4f9f-af40-c5f01fe3354e</rd:ReportID>
  <PageWidth>21cm</PageWidth>
  <Language>fr-FR</Language>
  <TopMargin>1.25cm</TopMargin>
  <PageHeight>29.7cm</PageHeight>
  ...

3 ) Les fameux DataSet :dans le cas où vous utiliser des sources dont le schéma n’est plus disponible, vous pouver les changer ici… et même ne ajouter

  <DataSets>
    <DataSet Name="MonDataSet_MaTable">
      <Fields>
        <Field Name=">Id">
          <DataField>Id</DataField>
          <rd:TypeName>System.Int32</rd:TypeName>
        </Field>
        <Field Name="Champ1">
          <DataField>Champ1</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
        <Field Name="Champ2">
          <DataField>Champ2</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
        <Field Name="Champ3">
          <DataField>Champ3</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
      </Fields>
      <Query>
        <DataSourceName>DummyDataSource</DataSourceName>
        <CommandText />
        <rd:UseGenericDesigner>true</rd:UseGenericDesigner>
      </Query>
      <rd:DataSetInfo>
        <rd:DataSetName>MonDataSet</rd:DataSetName>
        <rd:TableName>MaTable</rd:TableName>
      </rd:DataSetInfo>
    </DataSet>
	...
  </DataSets>

4) Le corps du report avec la disposition de chaque control (pratique quand on ne sait plus où est passer un control

  <Body>
    <ColumnSpacing>1cm</ColumnSpacing>
    <ReportItems>
     <Textbox Name="textbox1">
        <rd:DefaultName>textbox10</rd:DefaultName>
        <Top>0cm</Top>
        <Style>
          <FontFamily>Verdana</FontFamily>
          <FontSize>12pt</FontSize>
          <VerticalAlign>Bottom</VerticalAlign>
        </Style>
        <ZIndex>1</ZIndex>
        <CanGrow>true</CanGrow>
        <Height>0.3cm</Height>
        <Value>Mon text</Value>
      </Textbox>    
		...
	 </ReportItems>
    <Height>11.25cm</Height>
  </Body>

5) Le pieds de pages : il est tellement plus rapide de passer par XML pour changer les pieds de pages sur un dizaine de report que via le designer!

  <PageFooter>
    <PrintOnFirstPage>true</PrintOnFirstPage>
    <ReportItems>
      <Textbox Name="textbox1">
        <rd:DefaultName>textbox1</rd:DefaultName>
        <Top>0.35cm</Top>
        <Style>
          <FontFamily>Verdana</FontFamily>
          <FontSize>5pt</FontSize>
          <VerticalAlign>Bottom</VerticalAlign>
        </Style>
        <ZIndex>1</ZIndex>
        <CanGrow>true</CanGrow>
        <Height>0.3cm</Height>
        <Value>Adresse ... 3 rue de .... à ... CEDEX</Value>
      </Textbox>
      <Textbox Name="textbox2">
        <Style>
          <FontFamily>Verdana</FontFamily>
          <FontSize>7pt</FontSize>
          <VerticalAlign>Bottom</VerticalAlign>
        </Style>
        <CanGrow>true</CanGrow>
        <Height>0.3cm</Height>
        <Value>Nom de la société</Value>
      </Textbox>
    </ReportItems>
    <Height>0.85cm</Height>
    <PrintOnLastPage>true</PrintOnLastPage>
  </PageFooter>

Retour à La Une de Logo Paperblog

A propos de l’auteur


Jeremy.jeanson 1573 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte