Question

Je dois ajouter un deuxième DataTable du DataSet principal de notre application dans un rapport, mais je n'ai pas beaucoup de chance.

Nous avons plusieurs rapports locaux simples dans des fichiers RDLC, chacun avec un seul DataTable basé sur une vue dans notre base de données d'application.Je dois améliorer l'un des rapports pour ajouter des informations provenant d'un autre tableau.Cette autre table est définie dans le même noyau DataSet que nous utilisons pour les rapports dans notre application .NET 2.0 WinForms.Étant donné que les deux tables sont dans le même DataSet, puis-je simplement m'assurer que les deux tables sont chargées dans le DataSet, puis pointer le rapport vers le DataSet au lieu du DataTable ?Autre chose?

Inutile de dire que je joue avec ça depuis un moment et que je n'arrive à rien.

Tia, Matt

Était-ce utile?

La solution

OK, j'ai réussi à faire en sorte que cela fonctionne et, rétrospectivement, c'était assez facile.Je ne savais tout simplement pas quels menus utiliser pour que VS connecte tout, et dans quel ordre les faire.

Regarder le Designer.cs pour mon formulaire a été en fait la chose la plus utile que j'ai faite.J'ai remarqué que ReportViewer a un BindingSource par défaut pointé sur la première table.À l’origine, j’avais hâte d’essayer de donner au BindingSource un DataSet au lieu d’un DataTable, mais j’ai ensuite décidé d’essayer de créer un deuxième BindingSource à la place.

Il existe peut-être une meilleure solution, mais voici essentiellement ce que j'ai fini par faire :

  1. Avec le RDLC dans le concepteur, cliquez sur le menu Rapport puis sur Sources de données.

  2. Dans la boîte de dialogue Sources de données du rapport, choisissez le DataTable supplémentaire dans la liste déroulante et cliquez sur Ajouter au rapport.(J'ai également renommé la nouvelle source de données pour qu'elle soit simplement le nom de la table de données supplémentaire ;VS avait créé un nom long et gigantesque basé sur l'espace de noms complet.) OK pour fermer la boîte de dialogue.

  3. Sur le concepteur du formulaire qui contient mon contrôle ReportViewer, j'ai cliqué sur la balise active du ReportViewer (la petite flèche dans le coin supérieur droit du contrôle), puis j'ai sélectionné Relier les sources de données.Cela a fait apparaître un deuxième BindingSource au bas de la surface Designer.

  4. J'ai cliqué à nouveau sur la balise active du ReportViewer et cette fois, j'ai choisi « Choisir les sources de données » pour confirmer que le ReportViewer disposait désormais de deux sources de données, chacune liée à l'une des BindingSource instances maintenant sur le formulaire.

  5. Révision du code OnLoad de mon formulaire pour charger les lignes dans le deuxième DataTable.

  6. Je suis revenu au fichier RDLC, j'ai ajouté une nouvelle table et défini les cellules de détail sur les champs du deuxième DataTable - et cela a fonctionné !

J'espère que cela fera gagner quelques heures à quelqu'un d'autre un jour.

Autres conseils

J'ai trouvé un moyen de l'utiliser dans Visual Studio 2010.Cliquez sur Afficher > ReportData et lorsque les données du rapport sont visibles, cliquez sur Sources de données puis cliquez sur Ajouter.FAITES-le autant de fois que le nombre d’ensembles de données nécessaires.

Maintenant, dans les balises intelligentes du visualiseur de rapports, cliquez sur choisir les sources de données, cela affichera chacun des ensembles de données.Pour associer les ensembles de données à une source de liaison, vous devrez cliquer sur Projet puis cliquer encore jusqu'à ce que vous obteniez la classe appropriée, cela entraînera la création des sources de liaison.

Cette solution de contournement est très utile si vous disposez de plusieurs tableaux matriciels et que vous devez leur associer une source de liaison dans le même rapport lorsque le rapport est affiché dans la visionneuse de rapports.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top