更新Crystal Reports的数据提供程序

Jen*_*hah 5 vb.net sql-server crystal-reports crystal-reports-2008

我在My VB.NET Project中创建了许多Crystal Reports,从Microsoft Access 2007(.accdb)数据库获取数据.

现在,我正在使用Microsoft SQL Server(.mdf)数据库更新我的应用程序.

如何将Access文件中的数据源更新为所有Crystal Reports的MDF文件?

谢谢.

maj*_*jam 0

除非有人有更快/更简单的解决方案,否则这是我在 Visual Studio 2010 中使用 MS Access 获取水晶报表的方法。它比选择数据源的常规方法稍微复杂一些,但它提供了更多控制,是数据库不可知论,并且可以在其他方法有时失败的情况下工作(特别是根据我的经验,使用 MS Access)。

我将详细介绍使报告从头到尾工作的过程(因为整个过程可能对其他人有用),但会突出显示可能对您有用的部分。

1) 从 SAP 站点安装 Crystal Reports。确保您下载的是 exe 文件,而不是 msi 文件(它不起作用):

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

2) 将应用程序的目标框架更改为.Net Framework 4(不是客户端)。水晶的东西不包括在基本配置文件中。

3) 添加对 Crystal 库的引用 (Crystal Reports for .NET)

4) 添加一个窗体,在该窗体上放置一个 Crystal Report Viewer 控件(来自工具箱的“报表”部分):

该图显示了工具箱的报告部分,CrystalReportViewer 概述

5)添加一个CrystalReportDocument并将其分配给CrystalReportViewer控件:

在此输入图像描述

要实际使用数据填充报告,请执行以下操作:

1) 通过执行获取报告数据表(从网关)并导出架构的代码来输出报告架构。例如:

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

如果您已经创建了报告,您可能不需要这个。如果您可以手动编写 xml,则相同(一旦您有可用的模板就很容易)

2) 然后将其加载到报告中以获取可操作的字段以生成报告。为此,您可以右键单击“报告字段资源管理器”中的数据库字段:

在此输入图像描述

3) 从这里选择数据库专家并选择ADO.net (xml)。Access/Excel DAO 的逻辑选择实际上在 VS 2010 中根本不起作用。选择架构文件并加载它,然后双击 Table1 以填充 Selected Tables 视图:

在此输入图像描述

4) 现在您已经加载了架构,您将能够在字段下拉列表中看到字段,您可以将其拖放到报告中:

在此输入图像描述

5) 最后,通过在放置了报表查看器控件的表单的加载事件中执行代码,将数据集加载到报表中:

i) 确保从网关(或任何地方)输出数据集(不是数据表):

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
Run Code Online (Sandbox Code Playgroud)

ii) 然后将其分配给报告上的数据源:

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

您可能对上面的部分特别感兴趣,因为它允许您直接将数据源分配给报表,而无需使用水晶选择数据源 UI 面板。

还有一件事需要做,您需要将“useLegacyV2RuntimeActivationPolicy”添加到 app.config 文件中:

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

我希望这会有所帮助,抱歉,这太复杂了,如果您有任何疑问,请询问