不使用自动化从 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 是 运行 如果存在;用户界面消息可能会弹出;等等)我宁愿避免。
我会说你不能。您已列出选项。
也不能直接修改系统表。
但是您可以导出修改后的表单,该表单已禁用和隐藏打开报表的选项,从而有效地使用户无法访问报表。
我知道我可以从 中删除报告 访问 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 是 运行 如果存在;用户界面消息可能会弹出;等等)我宁愿避免。
我会说你不能。您已列出选项。
也不能直接修改系统表。
但是您可以导出修改后的表单,该表单已禁用和隐藏打开报表的选项,从而有效地使用户无法访问报表。