Tenzij iemand een snellere / eenvoudigere oplossing heeft, is dit de aanpak die ik gebruik om kristalrapporten te laten werken met MS Access in Visual Studio 2010. Het is iets ingewikkelder dan de normale methode om een gegevensbron te selecteren, maar het biedt meer controle, is database agnostisch en werkt waar de andere methoden soms mislukken (vooral met MS Access in mijn ervaring).
Ik zal het proces beschrijven om de rapporten van begin tot eind te laten werken (omdat het hele proces nuttig kan zijn voor anderen), maar ik zal de onderdelen benadrukken die voor u van nut kunnen zijn.
1) Installeer Crystal Reports vanaf de SAP-site. Zorg ervoor dat u het exe-bestand downloadt, NIET het msi-bestand (het werkt niet):
http://scn.sap.com/docs/DOC-7824
2) Wijzig het Target Framework van uw app in .Net Framework 4 (NIET client). De Crystal-dingen zijn niet opgenomen in het basisprofiel.
3) Voeg een verwijzing toe naar de Crystal-bibliotheken (Crystal Reports for .NET)
4) Voeg een formulier toe, plaats op dat formulier een Crystal Report Viewer-besturingselement (uit het gedeelte Rapportage van de Toolbox):
5) Voeg een CrystalReportDocument toe en wijs het toe aan het CrystalReportViewer-besturingselement:
Om het rapport daadwerkelijk met gegevens te vullen, doet u het volgende:
1) Voer uw rapportschema uit door code uit te voeren waarmee uw rapportgegevenstabel (van een gateway) wordt opgehaald en het schema wordt geëxporteerd. Bijvoorbeeld:
<TestMethod()>
Public Sub SchemaTest()
Dim dataSet As DataSet = StaticDataGateway.AccountingIncomeTotals
dataSet.WriteXmlSchema("I:\Myschema.xml")
End Sub
Als u uw rapporten al heeft gemaakt, heeft u dit waarschijnlijk niet nodig. Hetzelfde als je de XML met de hand kunt schrijven (gemakkelijk als je eenmaal een sjabloon hebt om mee te werken)
2) U laadt dit vervolgens in uw rapport om de velden te krijgen die u vervolgens kunt manipuleren om uw rapport te produceren. Om dit te doen, klikt u met de rechtermuisknop op databasevelden in de Report Field Explorer:
3) Vanaf hier selecteert u Database Expert en kiest u ADO.net (xml). De logische keuze voor Access/Excel DAO werkt eigenlijk helemaal niet in VS 2010. Selecteer uw schemabestand en laad het, dubbelklik vervolgens op Tabel1 om de weergave Geselecteerde tabellen te vullen:
4) Nu u een schema heeft geladen, kunt u velden zien in de vervolgkeuzelijst met velden die u naar uw rapport kunt slepen en neerzetten:
5) Ten slotte laadt u een dataset in uw rapport door code uit te voeren in de on load-gebeurtenis van uw formulier waarop u het rapportviewer-besturingselement hebt geplaatst:
i) Zorg ervoor dat u een dataset (niet datatable) uitvoert vanaf uw gateway (of waar dan ook):
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) Wijs het vervolgens toe aan de gegevensbron in het rapport:
Private Sub AccountingIncomeTotals_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
AccountingIncomeTotalsReport1.SetDataSource(StaticDataGateway.AccountingIncomeTotals)
End Sub
Het bovenstaande gedeelte is waarschijnlijk vooral interessant voor u, omdat u hiermee de gegevensbron rechtstreeks aan het rapport kunt toewijzen zonder dat u het Crystal Select DataSources UI-paneel hoeft te gebruiken.
Er is nog iets anders nodig, u moet "useLegacyV2RuntimeActivationPolicy" toevoegen aan het app.config-bestand:
http:/ /www.codeproject.com/Questions/390643/Error-When-use-of-crystal-report-sap-crystal-13-an
Ik hoop dat dit helpt, sorry dat het zo betrokken is, als je vragen hebt, stel ze gerust