更新Crystal Reports的数据提供程序

时间:2013-06-17 04:06:40

标签: sql-server vb.net crystal-reports crystal-reports-2008

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

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

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

感谢。

1 个答案:

答案 0 :(得分: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(NOT客户端)。 Crystal的内容不包含在基本配置文件中。

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

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

Image showing Reporting section of toolbox, CrystalReportViewer outlined

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

enter image description here

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

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

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

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

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

enter image description here

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

enter image description here

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

enter image description here

5)最后,通过在表单的on load事件中执行代码,将数据集加载到报表中:

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

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

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

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

还需要另外一件事,你需要添加“useLegacyV2RuntimeActivationPolicy” 到app.config文件:

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

我希望这会有所帮助,对不起它如此参与,如果您有任何疑问请咨询