Om inte någon har en snabbare/enklare lösning, här är tillvägagångssättet jag använder för att få kristallrapporter som fungerar med MS Access i Visual Studio 2010. Det är något mer involverat än den normala metoden att välja en datakälla, men den ger mer kontroll, är databasen agnostisk och fungerar där de andra metoderna ibland misslyckas (speciellt med MS Access enligt min erfarenhet).
Jag kommer att beskriva processen för att få rapporterna att fungera från början till slut (eftersom hela processen kan vara användbar för andra) men kommer att lyfta fram de bitar som kan vara till nytta för dig.
1) Installera Crystal Reports från SAP-webbplatsen. Se till att du laddar ner exe-filen, INTE msi-filen (den fungerar inte):
http://scn.sap.com/docs/DOC-7824
2) Ändra målramverket för din app till .Net Framework 4 (INTE klient). Kristallprylarna ingår inte i grundprofilen.
3) Lägg till en referens till Crystal-biblioteken (Crystal Reports for .NET)
4) Lägg till ett formulär, placera en Crystal Report Viewer-kontroll på det formuläret (från Rapporteringssektionen i Verktygslådan):
5) Lägg till ett CrystalReportDocument och tilldela det till CrystalReportViewer-kontrollen:
För att faktiskt fylla rapporten med data gör du följande:
1) Mata ut ditt rapportschema genom att köra kod som tar din rapportdatatabell (från en gateway) och exporterar schemat. Till exempel:
<TestMethod()>
Public Sub SchemaTest()
Dim dataSet As DataSet = StaticDataGateway.AccountingIncomeTotals
dataSet.WriteXmlSchema("I:\Myschema.xml")
End Sub
Om du redan har skapat dina rapporter behöver du förmodligen inte detta. Samma sak om du kan skriva xml för hand (lätt när du har en mall att arbeta utifrån)
2) Du laddar sedan in detta i din rapport för att få fram fälten som du sedan kan manipulera för att producera din rapport. För att göra detta högerklickar du på databasfält i Rapportfältutforskaren:
3) Härifrån väljer du Databasexpert och väljer ADO.net (xml). Det logiska valet av Access/Excel DAO fungerar faktiskt inte alls i VS 2010. Välj din schemafil och ladda den, dubbelklicka sedan på Tabell1 för att fylla i vyn Valda tabeller:
4) Nu när du har ett schema laddat kommer du att kunna se fält i rullgardinsmenyn för fält som du kan dra och släppa till din rapport:
5) Slutligen läser du in en datauppsättning i din rapport genom att köra kod i händelsen on load i ditt formulär som du placerade rapportvisningskontrollen på:
i) Se till att du matar ut en datauppsättning (ej datatabell) från din gateway (eller var som helst):
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) Tilldela den sedan till datakällan i rapporten:
Private Sub AccountingIncomeTotals_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
AccountingIncomeTotalsReport1.SetDataSource(StaticDataGateway.AccountingIncomeTotals)
End Sub
Ovanstående avsnitt kommer förmodligen att vara särskilt intressant för dig eftersom det gör att du kan tilldela datakällan direkt till rapporten utan att behöva använda panelen DataSources UI-panel.
Det finns en annan sak som krävs, du måste lägga till "useLegacyV2RuntimeActivationPolicy"Till filen app.config:
http:/ /www.codeproject.com/Questions/390643/Error-When-use-of-crystal-report-sap-crystal-13-an
Jag hoppas att detta hjälper, förlåt att det är så inblandat. Om du har några frågor, fråga gärna