ms-access - 在 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 循环删除自动生成的报告并避免损坏问题。但是有更好的方法吗?提前致谢。
解决方案
而不是循环你可以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
推荐阅读
- typescript - 使用 TypeScript 类型系统创建一个流畅的、有状态的构建器
- ringcentral - 使用 RingCentral 进行出站呼叫时如何禁用入站队列呼叫?
- module - systemverilog 模块命名空间
- flutter - 在 Flutter 中使用 Firebase/Google 登录时无法注销并重定向到 LoginPage
- php - 消息输入字段验证
- mysql - 从 UML 到 ER 图的抽象类。可能的 ?如何?
- java - 如何在@ManyToMany JPA 关系的一侧反转键值映射类型
- python - 如何在 QWebEngineView 中指定用户代理
- pybind11 - 如何使用 pybind11 绑定两个嵌套结构
- winapi - FileCreate 的一些问题