2010-03-02 7 views
2

J'ai fait une application asp.net pour générer des rapports sur une donnée particulière. Au départ, j'ai créé des rapports locaux (.rdlc) pour générer des rapports. J'ai créé un fichier .xsd distinct pour chaque rdlc et j'ai conçu les rapports. Je compile le jeu de données par programme et le lie au rdlc. J'ai utilisé le code suivant pour lier le DataSource des rapports -Liaison d'une source de données à un rdl dans le serveur de rapports par programme - SSRS

rptMyReport.LocalReport.ReportPath = Server.MapPath(srdlcName); 
rptMyReport.LocalReport.DataSources.Add(rds); 

Maintenant, j'ai converti tous les rdlc RDL suivant this msdn article et j'ai publié les rapports au serveur de rapports.

rptMyReport.ServerReport.ReportServerUrl = new System.Uri("http://ReportServer/ReportServer"); 
rptMyReport.ServerReport.ReportPath = "/ReportFolder/ReportName"; 

Maintenant, comment puis-je définir la source de données aux rapports par programme?

Répondre

3

Ce travail est impossible. vous devriez créer votre source de données dans votre rapport rdl. vous devez écrire les requêtes nécessaires pour la collecte de données de rapport. vous pouvez utiliser cette requête en tant que texte ou procédure stockée. Vous pouvez passer des paramètres à cette requête et filtrer la sortie de la requête. vous ne pouvez passer les paramètres du rapport sur le RDL comme ceci:

ReportParameter[] Params = new ReportParameter[1]; 
Params[0] = "Parameter Value"; 
ReportViewerControl.ServerReport.SetParameters(Params); 
+0

Merci. C'est ce que j'ai fait! – NLV

0

Qu'est-ce que vous essayez de faire? Je crois que la source de données est mentionnée dans le fichier .RDL lui-même. Par exemple: Lorsque vous créez un rapport à l'aide de BIDS, vous pouvez spécifier la source de données. Cela est ajouté au fichier .RDL. Le même concept est vrai ici aussi.

+0

Sur la base des choix de l'utilisateur que je suis. filtrer les données d'une table et l'assigner à la rdlc. Alors, comment puis-je faire ça dans rdl? – NLV

0

Ce n'est pas impossible, mais il peut prendre un peu d'effort si c'est ce que vous voulez faire.
Vous avez deux options:

  1. Si vous créez une source de données partagée sur votre serveur de rapports, vous pouvez l'ajouter manuellement à l'aide RDLObjectModel. Obtenez le nom de la source de données partagée et guid depuis votre serveur de rapports et vous pouvez l'ajouter à votre rapport.

    Exemple:

    'create the datasource for the report 
    Dim dataSrcRFoo = New RdlObjectModel.DataSource 
    dataSrcRFoo.Name = "DataSourceName" 
    dataSrcRFoo.DataSourceReference = "/path/to/DataSource" 
    dataSrcRFoo.IsShared = True 
    dataSrcRFoo.SecurityType = 2 ' RdlObjectModel.SecurityTypeEnum.DataBase 
    dataSrcRFoo.DataSourceID = New Guid("shareddatasourceguid") 
    
    'add data source to report 
    rdlRpt.DataSources.Add(dataSrcRFoo) 
    
  2. Une autre option consiste à utiliser des modèles sur le serveur qui ont la part (ou niveau du rapport) datasource construit en

Questions connexes