ms-access - 如何在 MS Access 报表宏中使用 VBA 更改记录源
问题描述
全部,
在 MS Access 2010 中,我有一个链接到报告的表(Today's Settled Jrnls)。我运行下面的 VBA 代码将报告导出为共享驱动器上的 pdf。
Public Function exporttopdf()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim MyFileName As String
Dim mypath As String
Dim temp As String
mypath = "S:\Dan\" & Format(Date, "mm-dd-yyyy") & "\"
If Dir(mypath, vbDirectory) = "" Then MkDir mypath
Set db = CurrentDb()
Set rs = CurrentDb.OpenRecordset("SELECT distinct [Settlement No] FROM [Today's Settled Jrnls]", dbOpenDynaset)
Do While Not rs.EOF
temp = rs("[Settlement No]")
MyFileName = rs("[Settlement No]") & ".PDF"
DoCmd.OpenReport "Settlement Report", acViewReport, , "[Settlement No]='" & temp & "'"
DoCmd.OutputTo acOutputReport, "", acFormatPDF, mypath & MyFileName
DoCmd.Close acReport, "Settlement Report"
rs.MoveNext
Loop
Set rs = Nothing
Set db = Nothing
End Function
这可行,但我想将 [Today's Settled Jrnls] 表更改为不同的表 [New Jrnls]。新表具有完全相同的列和设置。但是,当我在上面的 select 语句中更改表时,代码运行但报告为空白。我认为这是因为报告(结算报告)仍然链接到旧表。您知道如何使用 VBA 将报告链接到新表吗?
担
解决方案
只需RecordSource
在第一次打开报告后添加一个指向新表的调用:
' OPEN REPORT
DoCmd.OpenReport "Settlement Report", acViewReport
' ADJUST SOURCE
Reports![Settlement Report].Report.RecordSource = "SELECT * FROM [New Jrnls]"
' FILTER AND OUTPUT
DoCmd.OpenReport "Settlement Report", acViewReport, , "[Settlement No]='" & temp & "'"
DoCmd.OutputTo acOutputReport, "", acFormatPDF, mypath & MyFileName
DoCmd.Close acReport, "Settlement Report"
推荐阅读
- python - pandas 合并两个没有交叉引用的数据框,并且使用 NaN 来合并行数奇数
- c# - 将来自不同存储过程的结果合并到 C# 中的单个列表中
- node.js - 需要有关 npm 安装到 SSD 驱动器的建议
- linker - 尽管在 qbs 配置文件中的 cpp.runtimeLibrary 中存在“静态”,但仍使用动态 runtimeLibrary
- javascript - 尽管存在数据,但工具提示未显示
- node.js - 如何在 ExcelJS 中使用 Promise
- ruby-on-rails - 要求使用简单表单的电子邮件是唯一的
- transformation - 如何将 Dataweave 示例数据格式化为 LinkedHashMap
- python-3.x - 在图像中绘制多个字段
- c# - 如何调用 Oracle 存储过程来加载数据网格视图