Utilisation de Crystal Reports dans Visual Studio 2005 (application Windows C # .NET)

J’ai besoin de créer des rapports dans une application Windows C # .NET. J’ai une firebase database SQL Server 2005, Visual Studio 2005 et je suis tout à fait en mesure de créer des procédures stockées et des jeux de données.

Quelqu’un peut-il m’indiquer dans la bonne direction pour la création de rapports? Je n’arrive pas à comprendre. Quelques exemples seraient un bon début, ou un simple tutoriel How-to … tout ce qui est vraiment un peu mieux expliqué que la documentation MSDN.

J’utilise le contrôle CrystalDecisions.Windows.Forms.CrystalReportViewer pour afficher les rapports, je présume que cela est correct.

Si je suis sur le sharepoint me lancer dans une aventure longue et complexe, quel est le moyen le plus simple de créer et d’afficher des rapports pouvant également être imprimés?

J’ai réussi à faire ce travail maintenant.

Bref aperçu

Cela fonctionne en ayant une “classe de données” qui est juste une classe C # régulière contenant des variables et aucun code. Ceci est ensuite instancié et rempli de données, puis placé dans une ArrayList. La liste de tableaux est liée à l’afficheur de rapport, ainsi que le nom du rapport à charger. Dans le concepteur de rapport, les objects .Net sont utilisés plutôt que de communiquer avec la firebase database.

Explication

J’ai créé une classe pour stocker les données de mon rapport. Cette classe est remplie manuellement par moi-même en récupérant manuellement les données de la firebase database. Comment vous faites cela n’a pas d’importance, mais voici un exemple:

DataSet ds = GeneratePickingNoteDataSet(id); foreach (DataRow row in ds.Tables[0].Rows) { CPickingNoteData pickingNoteData = new CPickingNoteData(); pickingNoteData.delivery_date = (DateTime)row["delivery_date"]; pickingNoteData.cust_po = (int)row["CustomerPONumber"]; pickingNoteData.address = row["CustomerAddress"].ToSsortingng(); // ... and so on ... rptData.Add(pickingNoteData); } 

La classe est ensuite placée dans une ArrayList. Chaque élément de la liste correspond à une “ligne” dans le rapport final.

Le premier élément de la liste peut également contenir les données d’en-tête du rapport et le dernier élément de la liste peut contenir les données du pied de rapport. Et comme il s’agit d’une ArrayList, l’access normal à Array peut être utilisé pour les obtenir:

 ((CPickingNoteData)rptData[0]).header_date = DateTime.Now; ((CPickingNoteData)rptData[rptData.Count-1]).footer_serial = GenerateSerialNumber(); 

Une fois que vous avez une liste complète de données, associez-la à votre afficheur de rapport, où ‘rptData’ est du type ‘ArrayList’.

 ReportDocument reportDoc = new ReportDocument(); reportDoc.Load(reportPath); reportDoc.SetDataSource(rptData); crystalReportViewer.ReportSource = reportDoc; 

Vous devez maintenant lier votre classe de données au rapport lui-même. Vous faites cela dans le concepteur:

  1. Ouvrez l’onglet Explorateur de champs (qui peut se trouver dans le menu “Affichage”), puis cliquez avec le bouton droit de la souris sur “Champs de firebase database”.
  2. Cliquez sur ‘Données du projet’
  3. Cliquez sur ‘Objets .NET’
  4. Faites défiler la liste pour trouver votre classe de données (si ce n’est pas là, comstackz votre application)
  5. Appuyez sur ‘>>’ puis sur OK
  6. Vous pouvez maintenant faire glisser les membres de la classe sur le rapport et les organiser comme vous le souhaitez.

Crystal est une option possible pour créer des rapports. Cela fait longtemps et beaucoup de gens semblent l’aimer.

Vous voudrez peut-être jeter un coup d’œil aux services de génération de rapports SQL. J’ai utilisé les deux, mais je préfère les services de génération de rapports SQL. Il est très bien intégré au studio et fonctionne de manière similaire aux autres projets de Microsoft. C’est aussi gratuit avec le sql express etc.

Voici un bon article sur les services de création de rapports: http://www.simple-talk.com/sql/learn-sql-server/beginning-sql-server-2005-reporting-services-part-1/

Vous pouvez utiliser l’afficheur de rapports avec les rapports côté client intégrés à vs.net (contrôle ReportBuilder / ReportViewer). Vous pouvez créer des rapports de la même manière que pour les services de génération de rapports SQL, sauf que vous n’avez pas besoin de serveur SQL (ni de asp.net). De plus, vous avez un contrôle total sur eux (comment vous présentez, comment vous collectez les données, dans quelle couche elles sont générées, ce que vous faites avec elles après les avoir générées, telles que les envoyer par mail, les envoyer à ftp, etc.). Vous pouvez également exporter en PDF et excel.

Et dans votre cas, la création d’un rapport à partir des données et des entrées de l’utilisateur peut s’avérer très utile, car vous pouvez créer votre propre source de données et vos données au fur et à mesure. Une fois que vos données sont prêtes à être rapscopes, associez-les à votre rapport.

Les rapports peuvent être facilement générés dans Visual Studio 2005 (Ajouter un rapport à votre projet) et affichés dans une application Winforms à l’aide du contrôle ReportViewer.

Voici un excellent livre que je recommande à tout le monde de regarder si vous êtes intéressé par les rapports côté client. Il fournit de nombreuses informations utiles, ainsi que de nombreux scénarios et méthodes d’utilisation des rapports côté client.

http://www.apress.com/book/view/9781590598542

J’appuie également la recommandation d’Alex de se pencher sur les services de génération de rapports SQL. Si vous disposez d’une licence de développeur SQL, vous disposez probablement déjà de services de génération de rapports.

Je n’aime pas les rapports Crystal, trop d’ennui dans le concepteur (édition d’expressions tout le temps), trop de problèmes de déploiement de serveur (vérifiez les fichiers de licence!)

J’utilise le cristal. Je vais décrire brièvement ma méthode, mais sachez que je suis un homme à la fois et que cela peut ne pas correspondre à votre environnement.

Commencez par créer un formulaire avec une visionneuse CR. Ensuite:

1) Déterminez les données dont vous avez besoin et créez une vue qui récupère les colonnes souhaitées. 2) Créez un nouveau rapport Crystal en utilisant l’assistant en donnant votre vue comme source des données. 3) Faites glisser, déposez, insérez, supprimez et ainsi de suite pour transformer votre rapport en forme. Oui, c’est fastidieux. 4) Créez le clic de bouton nécessaire ou quoi que ce soit, puis créez la fonction dans laquelle générer le rapport. 5) Récupérez les données sur un DataTable (probablement dans un DataSet). Vous n’êtes pas obligé d’utiliser la vue. 6) Créez l’object de rapport. Définissez le DataTable pour être le DataSource. Atsortingbuez l’object de rapport à la visionneuse CR. C’est une partie pour laquelle il y a des exemples.

Commentaires:

Si vous perdez la fenêtre contenant les champs de la firebase database, etc. (Explorateur de champs), accédez à Afficher / Aperçu du document. (Je rêve d’avoir Bill Gates sur une scène et de lui demander de le trouver.)

La raison de la configuration de la vue est que si vous souhaitez append une colonne, vous devez la réviser et l’explorateur de champs sera mis à jour automatiquement. J’ai eu toutes sortes de difficultés à le faire autrement. Cette méthode constitue également une solution de contournement pour un bogue qui nécessite de parcourir toutes les tables en réinitialisant la table vers laquelle elles pointent. Vous voulez donner à Crystal une seule table. Vous ne voulez pas que Crystal rejoigne des tables, etc. Je ne dis pas que cela ne fonctionne pas; Je dis que c’est plus difficile.

Il existe (ou existait) de la documentation pour la mise en œuvre de Crystal par VS sur le site Web de Business Objects, mais j’estime qu’elle a disparu derrière un écran d’enregistrement / de connexion. (Je pourrais supporter plus d’informations à ce sujet moi-même.)

J’ai eu du mal à faire passer Crystal à la fin des sauts de page quand je le voulais, et non pas quand je ne veux pas, etc. C’est loin d’être le meilleur journaliste que j’ai jamais utilisé et je ne comprends pas pourquoi cela semble l’avoir mis tant d’autres en faillite. En outre, il est très difficile de gérer leurs politiques de licences dans une petite organisation fluide.

Édité pour append un exemple:

 AcctStatement oRpt = new AcctStatement() ; oRpt.Database.Tables[0].SetDataSource(dsRpt.Tables[0]); oRpt.SetParameterValue("plan_title",sPlanName) ; crViewer.ReportSource = oRpt ; 

J’ai trouvé les sites Web suivants résolus mes problèmes. Inclus ici pour référence future.

CrystalReportViewer Object Model Tutoriels pour expliquer comment faire fonctionner le tout. Et aussi Configuration d’un projet pour utiliser Crystal Reports , préparation du formulaire et ajout du contrôle

Je recommande fortement d’essayer une solution de reporting alternative. J’ai beaucoup d’expérience avec Crystal et j’ai réussi à faire des choses géniales avec .Net, mais honnêtement, l’intégration de Crystal et .Net est un pur cochon, sauf pour cas les plus simples.

J’ai essayé le RS. Je suis en train de convertir RS en Crystal. RS est trop lourd et trop lent (ou quelque chose). Il n’y a aucune raison d’attendre 30 secondes pour qu’un rapport soit rendu en RS lorsque Crystal le fait en moins d’une seconde.