详细信息:
我有一个MS-Access数据库程序,我在数据库中本地创建表。但是,我想确保对我创建的表进行测试,如果测试失败,我需要删除/删除已创建的其他表。基本上我认为是一个回滚过程。
问题:
我遇到了删除表格的两种方法,但无法弄清楚一个人是否有更多的利弊等...
有人可以告诉我有什么区别吗?
非常感谢!
答案 0 :(得分:11)
DoCmd.DeleteObject acTable, "aaaTest"
...和...
Dim cdb As DAO.Database
Set cdb = CurrentDb
cdb.Execute "DROP TABLE [aaaTest]", dbFailOnError
...和...
Dim cdb As DAO.Database
Set cdb = CurrentDb
cdb.TableDefs.Delete "aaaTest"
......只是完成同样事情的不同方式。他们删除具有该名称的本地TableDef
对象(实际的本地表或表链接)。
答案 1 :(得分:1)
@gordthompson简要说明了删除表的三种方法。在测试他的方法时,我注意到了一个区别。我正在脱机工作,并且在后端有链接的表,这些表指向客户端网络上的Access表。当我尝试使用Access UI删除链接表时,每个表可能要花费30秒以上。真烦人。
基于Gord的示例,我发现...
DoCmd.DeleteObject acTable, "aaaTest" ' is very slow, just like the Access UI.
CurrentDb.Execute "DROP TABLE [aaaTest]", dbFailOnError ' is immediate.
CurrentDb.TableDefs.Delete "[aaaTest]" ' is also immediate
如果表名包含破折号或其他特殊字符,则将该名称包装在[方括号]中即可解决此问题。
答案 2 :(得分:0)
我刚刚发现DropTable并不喜欢带有破折号的表名。我有很多,所以我使用DoCmd.Rename重命名表,然后我使用droptable擦除它们。这对我来说是最容易修复的,因为我有15个带破折号的表和60个一起在退出时删除以清理临时文件的表。