2010-07-09 8 views
3

Je me demandais s'il existait un moyen de concevoir un rapport pour ReportViewer à partir d'une requête SQL. Donc, à partir de la requête SQL, j'obtiendrais toutes les données dont j'ai besoin pour créer un rapport et ensuite concevoir le rapport dans le concepteur? Je suis très nouveau à ReportViewer et je suis assez confus. En ce moment je peux voir que je peux peupler le DataSet à partir d'un assistant, cependant autant que je peux voir il n'y a aucun moyen de lancer une requête SQL là-bas, puis de concevoir à partir de cela.Rapport ReportViewer à partir d'un DataTable

Est ce que je veux même possible ou devrais-je utiliser un DataGridView? Je veux vraiment utiliser le reportviewer à cause du support d'impression/exportation. Y a-t-il de la documentation disponible sur le sujet?

Répondre

1

Si vous utilisez le LocalReport Class (reportViewer.LocalReport) et non le SSRS (tout y est cliquable), un exemple figure dans le lien.

ReportDataSource Class a un constructeur qui accepte un objet DataTable.

Il vous suffit de concevoir le rapport et d'ajouter des ensembles de données au fichier RDL.

Modifier: Insérez des jeux de données au format XML comme ceci:

<DataSources> 
    <DataSource Name="MyDataSource"> 
     <ConnectionProperties> 
     <ConnectString /> 
     <DataProvider>SQL</DataProvider> 
     </ConnectionProperties> 
    </DataSource> 
    ... 
</DataSources> 

<DataSets> 
    <DataSet Name="MyDataSet"> 
     <Query> 
     <CommandText>MyDataSet</CommandText> 
     <DataSourceName>MyDataSource</DataSourceName> 
     </Query> 
     <Fields> 
     <Field Name="Id"> 
      <DataField>ID</DataField> 
     </Field> 
     <Field Name="SomeOtherField"> 
      <DataField>SOME_OTHER_FIELD</DataField> 
     </Field> 
     </Fields> 
    </DataSet> 
</DataSets> 
1

Tout d'abord, cela dépend si vous utilisez un rapport local ou un rapport de serveur (SQL Server Reporting Services). Les deux peuvent être affichés dans le contrôle ReportViewer.

Pour un rapport de serveur, les choses sont simples. Le rapport contient des sources de données et vous pouvez choisir d'utiliser une instruction SQL ou une procédure stockée existante.

Pour un rapport local, les choses sont un peu plus difficiles. Vous devez concevoir un jeu de données typé contenant vos données. Cela peut être rempli à partir de n'importe quoi comme d'habitude (commande SQL, procédure stockée, etc.). Vous devez ensuite affecter l'instance de cet ensemble de données à la source de données du rapport.

Veuillez noter que bien que les rapports de serveur vous permettent de filtrer les données, vous devez écrire vous-même une fonction de filtrage lorsque vous utilisez des rapports locaux.

Questions connexes