在VB.net Windows应用程序中使用Crystal Reports

问题描述 投票:0回答:1

我做了很多谷歌搜索和测试各种代码无济于事,所以在任何人喊“重复”之前,请通过阅读问题。

场景:我有一个使用visual studio 2013在VB.net中编写的窗体。我已经安装了Crystal Reports API,并且我已经打开了一个现有的报告,该报告随Sage Business Vision一起提供并删除了所有字段(基本上剥离了它)直到布局)。我需要从普及数据库中的3个不同表中提取数据,以便在此报告中使用。

我已经完成了什么:到目前为止,我已经创建了一个表单,并将其命名为“RPTviewer”,并且我已经删除了Crystal Report Viewer(并保留了默认名称'CrystalReportViewer1')

斗争:我很难让报告显示任何东西。我已经尝试使用SQL表达式字段,但他们不会让我使用WHERE子句。看来我只能在'SELECT'和'FROM'子句之间指定一个SQL字符串的PART.enter image description here

我的工作是在Windows窗体中执行所有查询并将信息注入预定义字段。我使用'Unbound Field'尝试了这个:

Private Sub RPTviewer_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim rpt As New OfficeCopyPS

    Dim crOrderNumber As CrystalDecisions.CrystalReports.Engine.TextObject
    crOrderNumber = rpt.ReportDefinition.ReportObjects("OrderNumber")
    crOrderNumber.Text = "1234567"


    CrystalReportViewer1.ReportSource = rpt
    CrystalReportViewer1.Refresh()
    rpt.Load()



End Sub

然而,所有这些让我在运行时都是一个空白的观众。我也尝试过使用参数字段,但它只是在运行时提示我输入一个值并忽略我在form_load事件中指定的内容(尽管它会加载报告)。

        rpt.SetParameterValue("OrderNumber", "1234567")
    CrystalReportViewer1.ReportSource = rpt
    CrystalReportViewer1.Refresh()
    rpt.Load()

enter image description here

必须有一种方法来做到这一点。有文件吗?任何人都可以建议一种更好的方法来获取我需要的信息到报告中吗?谢谢。

vb.net crystal-reports pervasive
1个回答
0
投票

好,我知道了。我将在此总结我的发现:参数只是:参数。它们可用于将信息传递给函数和查询数据。在数据库专家下,您可以使用在创建命令时定义的一个或多个参数创建带有WHERE子句的命令。

我的大问题是在加载报告之前尝试传递参数。以下是正确的顺序:

    CrystalReportViewer1.ReportSource = rpt
rpt.Load()
rpt.SetParameterValue("OrderNumber", "1234567")   'use this to pass parameters
rpt.DataDefinition.FormulaFields("FORMULAFEILDNAME").Text = "'" & This appears in formula & "'"   'This inserts into a formula feild.
    CrystalReportViewer1.Refresh()  

以上是传递给参数和公式字段的示例。与参数不同的公式字段似乎需要放在报表上以接收值。顾名思义,公式字段接受公式以及函数,循环,决策结构和变量。请注意,在上面的代码中,我必须将字符串封装在单引号中,以便公式显示它。

© www.soinside.com 2019 - 2024. All rights reserved.