是否可以将值从vba和表单传递给访问报告?

时间:2018-03-07 11:30:19

标签: ms-access parameters access-vba

我有一组报告,而不是目前从“选择报告”中获得的报告。形成。用户选择报告名称以及他们要查看的开始和/或结束日期,并且所选报告的基础查询会查看表单上的控件,以将报告过滤到所选日期。

我们现在希望每周一早上自动运行其中一些报告,通过电子邮件发送。报告的开始和结束日期将是Date()和Date()+ 14。我知道如何编写代码来运行报告并将其附加到电子邮件中,但我无法解决如何以编程方式将日期传递给表单的基础查询,而不是查找表单控件。

我已经搜索了答案,但只能找到解释如何做其中一个的答案,但如果可以使用相同的报告同时进行,则不会。 我试图在报告的基础查询中使用参数,但是当我从表单中打开报表时,我会得到日期参数的提示框,即使在表单上选择了日期并且是按预期传递给报告。

我还尝试通过openargs传递日期,而不是直接查看表单控件,但是我无法解决如何将这些openarg值传递到查询中,而只是将控件传递给查询报告。这意味着显示的开始日期和结束日期是正确的,但日期过滤不适用于报告。从单步执行开始,报表会在运行OnLoad代码之前加载数据,这会将控件设置为openargs值,因此在过滤数据时它们为空。

非常感谢任何帮助,我对此处的最佳方法感到有点困惑。谢谢。

1 个答案:

答案 0 :(得分:0)

我已经为此达成了一个有效的解决方案,它可能不是最优雅的,但它允许我在两个场景中使用单个报告,在特定日期范围内自动打开,或者在用户指定的用户请求下打开日期。
我修改了报告,因此他们的默认记录源使用Date()和Date()+ 14作为报告日期范围。 当用户从“报告选择”表单中打开报告时,“用户”将通过OpenArgs传递。表单的OnOpen事件检查OpenArgs的值,如果设置为“User”,则更改报表的记录源和显示报表日期范围的控件,以使用用户在选择表单上输入的日期。登记/> @kostasK。谢谢你的所有意见,你帮我解决了这个问题。