(VB / ACCESS / CR)根据Access Form过滤VB Crystal Report

时间:2013-08-19 18:04:02

标签: vb.net ms-access crystal-reports

在我提出这个问题之前,这里是对正在发生的事情的概述。

访问

具有选择JobId

的ComboBox的表单

Crystal Reports

报告来自多个表的信息,所有表都基于JobID

VB

一个表单(使用Crystal Reports插件),它在Crystal Reports Designer应用程序之外显示报告。

我的问题

我需要将VB中显示的报告过滤到Access ComboBox中选择的作业。

<击>

<击>

更新

我将我的数据库链接到VS2012,这没有任何问题。我可以轻松地从表中提取信息。我需要做的是将ComboBox 访问表单 链接到 VS2012 以过滤报告。

我希望这会让我的问题更加清晰。

更新2

我能够弄清楚如何基于Access中的ComboBox的值创建 SELECT 查询,所以我应该可以使用它来访问我正在寻找的值,但是我仍然需要知道如何使用该值作为CR的过滤器...

2 个答案:

答案 0 :(得分:1)

一种可能的解决方案是在Access中创建一个保存的Select Query,在CR中复制查询,并将该查询命名为[JobReport_base]。然后,在Access中创建另一个保存的选择查询并将其命名为[JobReport_current]。在Access表单中添加一些代码,用于更新[JobReport_current]查询的.SQL属性,只返回所选[JobId]的记录,如

Dim qdf As DAO.QueryDef
Set qdf = CurrentDb.QueryDefs("JobReport_current")
qdf.SQL = "SELECT * FROM JobReport_base WHERE JobId = " & cbxJobId
Set qdf = Nothing

然后更新Crystal Report以从[JobReport_current]查询而不是单个表中提取数据。

答案 1 :(得分:0)

多种解决方案。在您的情况下,最简单的是:

  • 报告的“sqlQueryString”属性可以通过直接更新字符串来更新。
  • 您还可以在报告中添加一个参数(我们称之为'PAR_yourCombobox')。在VB代码中访问报表时,只需将参数值设置为屏幕上的值即可。据我记得,它应该看起来像:

    yourReport.parameterFields(i)。addCurrentValue yourForm.controls(“yourCombobox”)。value