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>
