0

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

使用权

具有选择 JobId 的 ComboBox 的表单

水晶报表

一个从多个表调用信息的报告,所有表都基于 JobID

VB

在 Crystal Reports Designer 应用程序之外显示报表的表单(使用 Crystal Reports 插件)。

我的问题

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

更新

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

我希望这能让我的问题更清楚。

更新 2

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

4

2 回答 2

1

一种可能的解决方案是在 Access 中创建一个保存的选择查询,该查询复制 CR 中的查询,并将该查询命名为 [JobReport_base]。然后,在 Access 中创建另一个保存的 Select Query 并将其命名为 [JobReport_current]。将一些代码添加到您的 Access 表单中,以更新.SQL[JobReport_current] 查询的属性以仅返回所选 [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] 查询而不是单个表中提取数据。

于 2013-08-19T19:31:24.603 回答
0

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

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

    yourReport.parameterFields(i).addCurrentValue yourForm.controls("yourCombobox").value

于 2013-08-19T19:41:54.117 回答