不使用自动化从 mdb 文件中删除报告

Delete a report from an mdb file without using automation

我知道我可以从 中删除报告 访问 VBA:

DoCmd.DeleteObject acReport, "SomeReport"

我也知道我可以从外部删除报告 使用自动化访问(VB.NET示例):

Set acc = CreateObject("Access.Application")
acc.OpenCurrentDatabase(...)
Set db = acc.CurrentDb()

' Enumerate db.Containers("Reports").Documents to find the report name
...

acc.DoCmd.DeleteObject(acReport, reportName)

我也知道我可以使用 ADO.NET(即没有自动化)访问 Access tables

我的问题是:我可以在不使用的情况下使用自动化从 Access 数据库文件删除报告吗?


备注:

  • 以防万一:我目前受困于旧版 mdb 数据库,但如果有仅 accdb 的解决方案,我也会对此感到好奇。

  • 官方认可的解决方案是首选,但是,如果有 none,经过充分验证的黑客攻击(例如以某种方式修改 MSysObjects)或未记录的功能也是可以接受的。

  • 如果您想知道为什么我想这样做:自动化解决方案有一些缺点(如果安装了多个 Access 版本则不确定;AutoExec 是 运行 如果存在;用户界面消息可能会弹出;等等)我宁愿避免。

我会说你不能。您已列出选项。

也不能直接修改系统表。

但是您可以导出修改后的表单,该表单已禁用和隐藏打开报表的选项,从而有效地使用户无法访问报表。