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>