Pokud někdo nemá rychlejší/jednodušší řešení, zde je přístup, který používám k tomu, aby krystalové sestavy fungovaly s MS Access ve Visual Studiu 2010. Je to o něco složitější než normální metoda výběru zdroje dat, ale nabízí větší kontrolu, je databáze agnostický a funguje tam, kde ostatní metody někdy selhávají (zejména s MS Access podle mých zkušeností).
Budu podrobně popisovat proces uvedení přehledů do provozu od začátku do konce (protože celý proces může být užitečný pro ostatní), ale zdůrazním části, které se vám mohou hodit.
1) Nainstalujte Crystal Reports ze stránky SAP. Ujistěte se, že jste stáhli soubor exe, NE soubor msi (nefunguje):
http://scn.sap.com/docs/DOC-7824
2) Změňte cílový rámec vaší aplikace na .Net Framework 4 (NE klient). Věci Crystal nejsou součástí základního profilu.
3) Přidejte odkaz na knihovny Crystal (Crystal Reports for .NET)
4) Přidejte formulář, do tohoto formuláře umístěte ovládací prvek Crystal Report Viewer (ze sekce Reporting v Toolboxu):
5) Přidejte CrystalReportDocument a přiřaďte jej ovládacímu prvku CrystalReportViewer:
Chcete-li sestavu skutečně naplnit daty, postupujte takto:
1) Výstup schématu sestavy spuštěním kódu, který převezme datovou tabulku sestavy (z brány) a exportuje schéma. Například:
<TestMethod()>
Public Sub SchemaTest()
Dim dataSet As DataSet = StaticDataGateway.AccountingIncomeTotals
dataSet.WriteXmlSchema("I:\Myschema.xml")
End Sub
Pokud již máte vytvořené přehledy, pravděpodobně to nebudete potřebovat. Totéž, pokud můžete psát xml ručně (snadné, jakmile budete mít šablonu, ze které budete pracovat)
2) Toto pak načtete do své sestavy, abyste získali pole, se kterými pak můžete manipulovat a vytvořit sestavu. Chcete-li to provést, klikněte pravým tlačítkem na databázová pole v Průzkumníku pole sestav:
3) Zde vyberte Database Expert a zvolte ADO.net (xml). Logická volba Access/Excel DAO ve VS 2010 ve skutečnosti vůbec nefunguje. Vyberte soubor schématu a načtěte jej, poté dvojitým kliknutím na Tabulka1 vyplňte zobrazení Vybrané tabulky:
4) Nyní, když máte načteno schéma, uvidíte pole v rozevíracím seznamu polí, které můžete přetáhnout do sestavy:
5) Nakonec načtete datovou sadu do svého přehledu spuštěním kódu v události on load formuláře, na který jste umístili ovládací prvek reportviewer:
i) Ujistěte se, že z vaší brány (nebo odkudkoli) vydáváte datovou sadu (ne datatable):
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) Poté jej přiřaďte ke zdroji dat v sestavě:
Private Sub AccountingIncomeTotals_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
AccountingIncomeTotalsReport1.SetDataSource(StaticDataGateway.AccountingIncomeTotals)
End Sub
Výše uvedená část pro vás bude pravděpodobně obzvláště zajímavá, protože vám umožňuje přímo přiřadit zdroj dat k sestavě, aniž byste museli používat panel uživatelského rozhraní pro výběr datových zdrojů.
Je potřeba ještě jedna věc, musíte přidat „useLegacyV2RuntimeActivationPolicy“ do souboru app.config:
http:/ /www.codeproject.com/Questions/390643/Error-When-use-of-crystal-report-sap-crystal-13-an
Doufám, že to pomůže, omlouvám se, že je to tak zapletené, pokud máte nějaké dotazy, zeptejte se