Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Mise à jour du fournisseur de données de Crystal Reports

À moins que quelqu'un ait une solution plus rapide / plus simple, voici l'approche que j'utilise pour obtenir des rapports Crystal fonctionnant avec MS Access dans Visual Studio 2010. C'est un peu plus compliqué que la méthode normale de sélection d'une source de données, mais il offre plus de contrôle, c'est la base de données agnostique et fonctionne là où les autres méthodes échouent parfois (en particulier avec MS Access d'après mon expérience).

Je détaillerai le processus de fonctionnement des rapports du début à la fin (car l'ensemble du processus peut être utile à d'autres), mais je soulignerai les éléments qui peuvent vous être utiles.

1) Installez Crystal Reports depuis le site SAP. Assurez-vous de télécharger le fichier exe, PAS le msi (cela ne fonctionne pas) :

http://scn.sap.com/docs/DOC-7824

2) Modifiez le Framework cible de votre application en .Net Framework 4 (PAS client). Le matériel Crystal n'est pas inclus dans le profil de base.

3) Ajouter une référence aux bibliothèques Crystal (Crystal Reports pour .NET)

4) Ajoutez un formulaire, placez sur ce formulaire un contrôle Crystal Report Viewer (depuis la section Reporting de la Toolbox) :

5) Ajoutez un CrystalReportDocument et affectez-le au contrôle CrystalReportViewer :

Pour remplir réellement le rapport avec des données, procédez comme suit :

1) Générez votre schéma de rapport en exécutant du code qui prend votre table de données de rapport (à partir d'une passerelle) et exporte le schéma. Par exemple :

<TestMethod()>
Public Sub SchemaTest()
    Dim dataSet As DataSet = StaticDataGateway.AccountingIncomeTotals
    dataSet.WriteXmlSchema("I:\Myschema.xml")
End Sub

Si vous avez déjà créé vos rapports, vous n'en aurez probablement pas besoin. Idem si vous pouvez écrire le xml à la main (facile une fois que vous avez un modèle à partir duquel travailler)

2) Vous chargez ensuite ceci dans votre rapport pour obtenir les champs que vous pouvez ensuite manipuler pour produire votre rapport. Pour ce faire, cliquez avec le bouton droit sur les champs de la base de données dans l'explorateur de champs de rapport :

3) De là, vous sélectionnez Database Expert et choisissez ADO.net (xml). Le choix logique d'Access/Excel DAO ne fonctionne en fait pas du tout dans VS 2010. Sélectionnez votre fichier de schéma et chargez-le, puis double-cliquez sur le Table1 pour remplir la vue Tables sélectionnées :

4) Maintenant que vous avez chargé un schéma, vous pourrez voir les champs dans la liste déroulante des champs que vous pouvez faire glisser et déposer sur votre rapport :

5) Enfin, vous chargez un ensemble de données dans votre rapport en exécutant du code dans l'événement on load de votre formulaire sur lequel vous avez placé le contrôle reportviewer :

i) Assurez-vous de sortir un jeu de données (non datatable) depuis votre passerelle (ou n'importe où) :

Public Shared Function AccountingIncomeTotals() As DataSet
    Dim dataSet As New DataSet
    Dim dataTable As DataTable = Database.GetDataTable(GetCommand(DBC.Reporting.SPs.AccountingIncomeTotals))
    dataSet.Tables.Add(dataTable)
    Return dataSet
End Function

ii) Attribuez-le ensuite à la source de données sur le rapport :

Private Sub AccountingIncomeTotals_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    AccountingIncomeTotalsReport1.SetDataSource(StaticDataGateway.AccountingIncomeTotals)
End Sub

La section ci-dessus vous intéressera probablement particulièrement, car elle vous permet d'attribuer directement la source de données au rapport sans avoir à utiliser le panneau d'interface utilisateur Crystal Select DataSources.

Il y a une autre chose requise, vous devez ajouter "useLegacyV2RuntimeActivationPolicy" au fichier app.config :

http:/ /www.codeproject.com/Questions/390643/Error-When-use-of-crystal-report-sap-crystal-13-an

J'espère que cela vous aidera, désolé c'est si compliqué, si vous avez des questions, n'hésitez pas