【问题标题】:Using Crystal Reports in VB.net windows app在 VB.net windows 应用程序中使用 Crystal Reports
【发布时间】:2018-02-21 14:16:42
【问题描述】:

我已经做了很多谷歌搜索并测试了各种代码都无济于事,所以在有人喊“重复”之前,请仔细阅读问题。

场景:我有一个使用 Visual Studio 2013 用 VB.net 编写的 windows 窗体。我已经安装了 Crystal Reports API,并打开了 Sage Business Vision 提供的现有报表并删除了所有字段(基本上将其剥离为仅布局)。我需要从我的普遍数据库中的 3 个不同表中提取数据以用于此报告。

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

斗争:我很难让报告显示大部分内容。我试过使用 SQL 表达式字段,但他们不允许我使用 WHERE 子句。看来我只能在 'SELECT' 和 'FROM' 子句之间指定 SQL 字符串的一部分。

我的解决方法是在 Windows 窗体中进行所有查询并将信息注入到预定义的字段中。我已经尝试过使用“未绑定字段”:

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()

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

【问题讨论】:

  • 您是否在使用连接到报表的数据源显示表中的字段时遇到问题?对于这种事情,我通常使用公式。作为Expressions are pretty limited
  • 我只有一天时间玩这个,所以我不知道如何使用公式。但很高兴知道我不应该为表达而烦恼
  • 他们有自己的位置,但您的报告运行速度并不慢。我没有使用过它们,但我确实想到了一个例子,这会加快我的报告速度。我只是使用数据集设计器,将其设置为报表的来源,然后您可以根据需要在代码中过滤查询。
  • 就在那儿!这就是我需要的!如何过滤查询?这也在公式字段中吗?

标签: vb.net crystal-reports pervasive


【解决方案1】:

好的,我明白了。我将在这里总结我的发现:参数就是:参数。它们可用于将信息传递给函数和查询数据。在数据库专家下,您可以使用在创建命令时定义的一个或多个参数来创建带有 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()  

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多