使用生成的 RecordSet 中的数据打开报表
Posted
技术标签:
【中文标题】使用生成的 RecordSet 中的数据打开报表【英文标题】:Open a report with data from a generated RecordSet 【发布时间】:2014-02-05 15:48:29 【问题描述】:我对 Access、VBA 和报告还很陌生。我要做的是从我创建的动态查询中获取结果并使用该数据打开报告。
到目前为止,我的基本设置是一个包含用户输入数据的表格。他们应该在月底生成一份报告。为了生成此报告,我设置了一个带有 VBA 的表单,以根据他们的输入生成查询。运行该查询后,我将其设置为打开报告。
目前我还没有弄清楚如何使用该 RecordSet 作为报表的数据源。
谁能帮我解决这个问题?
【问题讨论】:
【参考方案1】:我倾向于处理这种情况的方式是在 Access 中创建一个已保存的查询,基于该已保存的查询生成报表,然后在打开报表之前更新 QueryDef 对象的 .SQL
属性。
例如,对于报告 [MyReport],我将创建一个名为 [DataForMyReport] 的已保存查询,其中包含一些虚拟 SQL 语句。然后,当需要为给定查询运行报告时,我会这样做
Dim cdb as DAO.Database, qdf as DAO.QueryDef
Set cdb = CurrentDb
Set qdf = cdb.QueryDefs("DataForMyReport")
qdf.SQL = strNewQueryToUse ' replace the SQL statement with the new one
Set qdf = Nothing
DoCmd.OpenReport "MyReport"
【讨论】:
【参考方案2】:您可以做 3 件事中的 1 件事:
1) 创建一个已保存的查询并将该查询用作报表的 RecordSource。查询中的数据会改变,但查询名称不会。当报表打开时,它将拉入已保存查询的当前结果。这绝对是最简单的方法。
2) 打开报表时,在代码中设置它的 RecordSource。我认为没有必要这样做。
3) 如果您发现绝对有必要动态创建查询并且该查询的名称可能会更改,您可以将其作为 OpenArgs 传递。不过我不推荐这个。
【讨论】:
这是在 VBA 脚本中创建的查询。这不仅仅是一个静态查询。 但是您可以使用 VBA 保存它,并且每次都给它相同的名称。以上是关于使用生成的 RecordSet 中的数据打开报表的主要内容,如果未能解决你的问题,请参考以下文章