首页 > 解决方案 > 在 MS Access 中重命名自动生成的报告的最佳方法

问题描述

如何为通过 CreateReport 创建的 MS Access 报告分配名称?

代码创建一个动态报告,然后将控件添加到报告中。最后,我想将报告命名/保存为“Student_Scores_Report01”,但似乎 CreateReport 自动生成报告的名称为 Report1、Report2 等。我遇到了 Access 创建“Report1”但它没有'实际上不存在,导致整个项目被破坏。这是我解决这个问题的最佳猜测,但它似乎效率低下:

Dim rpt as Report
Set rpt = CreateReport
Dim ReptNmTemp as String
ReptNmTemp = rpt.name
DoCmd.Save acReport, rpt.Name
DoCmd.Close acReport, rpt.Name
DoCmd.Rename "Student_Scores_Report01", acReport, ReptNmTemp
For Each rpt02 In CurrentProject.AllReports
If rpt02.Name = ReptNmTemp Then
    DoCmd.DeleteObject acReport, ReptNmTemp
End If
Next

For...each 循环删除自动生成的报告并避免损坏问题。但是有更好的方法吗?提前致谢。

标签: ms-access

解决方案


而不是循环你可以On Error Resume Next或其他一些错误处理程序。

Dim rpt as Report
Dim ReptNmTemp as String
Set rpt = CreateReport
ReptNmTemp = rpt.name
DoCmd.Save acReport, ReptNmTemp
DoCmd.Close acReport, ReptNmTemp, acSaveYes
DoCmd.Rename "Student_Scores_Report01", acReport, ReptNmTemp
On Error Resume Next
DoCmd.DeleteObject acReport, ReptNmTemp

或者使用 acDefault,这实际上是 Save 和 Close 的默认参数,这意味着如果不提供参数,将使用 acDefault。

Dim rpt as Report
Set rpt = CreateReport
DoCmd.Save , "Student_Scores_Report01"
DoCmd.Close , , acSaveYes

推荐阅读