Bonjour,
Je cherche un moyen de créer un rapport dans une WebForm en utilisant le contrôl ReportViewer et un LocalReport (.rdlc) avec une source de donnée issus d'une requête MDX.
adomd permet de récupérer un DataTable ou un CellSet mais après je sèche... après quelque recherches doc et forum on sent bien que tout est fait pour que ce ne soit pas possible à moins d'utiliser Reporting Services...
Si quelqu'un pouvait m'aider ?
Merci
Stéphane
le 19/11/2007.
voilà la solution : Forum Microsoft : OLAP Data Sources
en utilisant par exemple quelques lignes de codes assez simples pour récupérer un DataSet du résultat de la requête MDX :
ensuite il faut ajouter une source de donnée au ReportViewer comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public DataSet getDataset(string mdxQuery) { DataSet ds = new DataSet(); AdomdCommand cmd = new AdomdCommand(mdxQuery, _mdConn); AdomdDataAdapter adpt = new AdomdDataAdapter(cmd); int nbOfRows = adpt.Fill(ds); return ds; }
d'après l'url que j'ai cité plus haut, il faut reproduire excactement le nom des colonnes de Table[0] dans le rapport local comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 /* Display Report */ DataSet dataset = this.getDataset(C_MDXQUERY); ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("ReportingYes", dataset.Tables[0])); ReportViewer1.DataBind();
(il faut editer le rapport local en XML)
Voilà ! (enfin...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <DataSets> <DataSet Name="ReportingYes"> <Query> <CommandText>SELECT * FROM Table</CommandText> <DataSourceName>DummyDataSource</DataSourceName> </Query> <Fields> <Field Name="Year"> <rd:TypeName>System.Int32</rd:TypeName> <DataField>[Time].[Month].[Year].[MEMBER_CAPTION]</DataField> </Field> <Field Name="Ca"> <rd:TypeName>System.Decimal</rd:TypeName> <DataField>[Measures].[CA]</DataField> </Field> <Field Name="OrderNb"> <rd:TypeName>System.Int32</rd:TypeName> <DataField>[Measures].[OrderNb]</DataField> </Field> </Fields> </DataSet> </DataSets>
je ne me suis pas trop étendu sur les explications, mais n'hésitez pas à me poser des questions sur ce post
Partager