将 Access 报表的记录源设置为 ADODB 记录集

Posted

技术标签:

【中文标题】将 Access 报表的记录源设置为 ADODB 记录集【英文标题】:Set Access report's recordsource to ADODB recordset 【发布时间】:2021-04-12 01:48:48 【问题描述】:

我有一个案例,我想将 Access 报告记录集设置为使用 ADODB 连接查询返回的记录集。

所以在报告中我不能这样做:

Me.recordsource = "SELECT * FROM TABLE1" 

因为TABLE1 在数据库中不存在。有没有办法在不创建链接表的情况下做到这一点?

【问题讨论】:

我使用 Access 文件进行了测试。我能够设置表单的 Recordset 属性,但我怀疑是否可以使用报告来完成。可以从带有报告 RecordSource 属性的 Access 文件中提取数据而无需设置链接或连接,例如:SELECT * FROM tableORquery IN 'Z:\path\accessfile.accdb' 我使用 Access 文件测试了 ADO 和 DAO (***.com/questions/242504/…) - 报告均失败。 你连接的是什么类型的数据库? 【参考方案1】:

您可以设置报告记录集,但前提是您使用的是 ADP:

Set Me.Recordset = CurrentProject.Connection.Execute("SELECT * FROM Table1")

如果要使用外部表,可以使用直通查询:

Dim qd As DAO.QueryDef
Set qd = CurrentDb.CreateQueryDef("TempQuery")
qd.Connect = "ODBC;My ODBC connection string"
qd.SQL = "My SQL query"
Set qd = Nothing
Me.Recordsource = "SELECT * FROM TempQuery"

有一些技巧可以永久隐藏直通查询,和/或在报告关闭后将其删除,但通常我喜欢让它们可供用户使用。

【讨论】:

以上是关于将 Access 报表的记录源设置为 ADODB 记录集的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 2016:设置报表的 RecordSource 以从子窗体中获取数据

在access报表中,按"编号"字段前四位分组统计每组记录的平均年龄,并将统计结果显示在组页脚节区.怎么做?

报表对象可以实现数据的显示和编辑吗

带有 ADODB 记录集的 MS Access ListBox 列属性创建错误 424 需要对象

报告的多个记录源

如何将 Microsoft Access 表单中的单个记录打印到报表中