如何以编程方式将参数传递到访问报告中?

时间:2008-12-29 21:53:41

标签: ms-access access-vba

我有一个现有的Access MDB。我正在向运行现有报表的现有表单添加命令按钮。所做的更改是此按钮需要传入一个参数,该参数包含报告的记录的ID - 当前报告在MDB中的每条记录上运行。

我已经更改了运行报告的查询以使用ID值的参数,因此现在当单击按钮时,Access会提示输入要记录的记录ID,并且报告显示应该如此。< / p>

但是,我不能为我的生活弄清楚如何将参数传递给报告以供查询使用。我怎么能这样做?

5 个答案:

答案 0 :(得分:21)

DoCmd.OpenReport方法有各种参数,其中一个是Where语句:

DoCmd.OpenReport"rptReport", acViewPreview,,"ID=" & Me.ID

那是

expression.OpenReport(ReportName, View, FilterName, WhereCondition, WindowMode, OpenArgs)

答案 1 :(得分:3)

我对此类问题的一般处理方法是将条件保存在数据库中,通常是具有一行的控制表。然后,为了引用您的标准,您将查询放在paranthesis中,返回一个您想要的标准值。在你的情况下,它会是这样的:

(select reportID from control)

此技术的优点是控制表会记住下次运行报告时的设置。当然,ReportID将与表单中的字段绑定。我也喜欢你的查询与表格隔离的事实;它们可以独立于表格运行。

答案 2 :(得分:2)

docmd.openreport的Where子句是一个字符串,它使用与SQL语句中where子句相同的格式。

将查询参数化放在docmd而不是报告的RecordSource的原因是灵活性。您可能需要在没有任何参数的情况下打开报告/返回所有记录,或者能够在不同的字段上进行过滤。

答案 3 :(得分:1)

为什么每个人都想让这个变得如此复杂,我不知道。

  1. 不带参数保存报告的记录源。

  2. 根据Remou的建议
  3. ,在DoCmd.OpenReport的相应参数中传递标准。

  4. 尝试以任何其他方式执行此操作将成为抵制在Access中完成任务的自然方法的问题。

答案 4 :(得分:1)

我知道这是一个很老的帖子,但这让我有点兴奋。错误是“无效使用parren”,但问题是字段名称中的空格。我正在创建一个数据库的报告,有人做了常见的错误,空格。

当数据库字段有空格时,通过where子句将参数传递给查询使用此示例:

DoCmd.OpenReport "rptByRegionalOffice", acViewPreview, , "[" & "Regional Office" & "]" & "=" & "'" & cmboOffices.Value & "'"

如果您考虑到这一点,您可以看到这将产生where [Regional Office]='string value',正如您在访问sql中所期望的那样。