VBA脚本检查MS ACCESS上是不是存在表,如果存在则删除

Posted

技术标签:

【中文标题】VBA脚本检查MS ACCESS上是不是存在表,如果存在则删除【英文标题】:VBA Script to check if table exist on MS ACCESS, Delete if it doesVBA脚本检查MS ACCESS上是否存在表,如果存在则删除 【发布时间】:2017-02-06 01:27:18 【问题描述】:

我需要检查 TableA 是否存在,如果存在,则删除整个表。如果没有,我将创建表。我真的不知道这是否可以在 VBA / MS Access 上实现。

在 SQL 中我们可以使用:

DROP TABLE IF EXISTS dbo.TableA

有人知道如何实现吗?谢谢!

【问题讨论】:

【参考方案1】:

有一种比上面的代码更简单的方法。

On Error Resume Next
  currentdb.execute "DROP TABLE TABLENAME;"
On Error Goto 0

它的作用是尝试删除表并在由于表不存在而产生错误时跳过该行。只有 3 行,运行速度更快。

【讨论】:

【参考方案2】:

考虑使用 TableDefs 集合,您可以在其中迭代项目并使用代码中传递的相同 DDL SQL 语句有条件地删除或创建。

Dim db As Database 
Dim tbldef As TableDef

Set db = CurrentDb

For each tbldef in db.TableDefs 
   If tbldef.Name = "TableName" Then 
      db.Execute "DROP TABLE " & tbldef.Name, dbFailOnError
   End if 
Next tbldef

db.Execute "CREATE TABLE TableName (...rest of SQL...);", dbFailOnError    

' UNINITIALIZE OBJECTS 
Set tbldef = Nothing 
Set db = Nothing

【讨论】:

以上是关于VBA脚本检查MS ACCESS上是不是存在表,如果存在则删除的主要内容,如果未能解决你的问题,请参考以下文章

如何通过VBscript检查MS Access中是不是存在表

从 Excel VBA-检查访问表是不是存在/如果不存在,则创建/复制

MS ACCESS, VBA 将外部 MS Access 表导入 SQL server 表

MS Access VBA 修改 Excel 工作表而不写入 Drive

检查 MS Access 数据库表,如果不存在则创建它

关于 MS Access 2003 和 VBA 编程