1

我需要在 Access 2003 中删除 180 个表中的 175 个(使用 Access 2000 格式的数据库)。我尝试的第一件事是转到表格列表并尝试全选,按住 Control 单击我要保留的那些,然后选择“删除”。但是,事实证明您一次只能选择一个。

drop然后我找到了一种方法来获取所有表名的纯文本列表,并使用 Vim做了一堆语句:

drop table table_1;
drop table table_2;
...
drop table table_175;

(显然,这些不是真名。)这些语句本身可以正常工作(即,一次只执行一个,但是当我尝试运行 2 个或更多时,我收到一条错误消息:

Syntax error in DROP TABLE or DROP INDEX.

这似乎违背了目的。哦,访问……你总是让我想拔头发。

我缺少什么来完成这项工作?任何能让我保留我需要的几张桌子的过程都会很棒。(不过,我想避免学习任何 Visual Basic。)

4

3 回答 3

2

使用 VBA。

For Each tbl In CurrentDb.TableDefs
    If Left(tbl.Name,4) <> "Msys" Then
        s = "DROP TABLE " & tbl.Name
        CurrentDb.Execute s
    End If
Next

For i = ( CurrentDb.TableDefs.Count - 1 ) To 0 Step -1
    If Left(tbl.Name,4) <> "Msys" Then
        ''Debug.Print CurrentDb.TableDefs(i).Name
        CurrentDb.TableDefs.Delete CurrentDb.TableDefs(i).Name
    End If
Next

如果要删除特定表或表相关,您可能必须提供数组或记录集并对其进行迭代。

于 2010-02-12T22:23:53.107 回答
2

Remou 可以解决您的问题,但作为建议,您可能希望将要保留的表导入到新文件中。您可以选择多个文件及其数据。除非您有很多剩余的表,否则您最终可能会得到一个更干净的文件。

于 2010-02-13T02:02:31.030 回答
1

如上所述,一般来说,我们使用对象模型和 VBA 来删除表定义及其数据。

您不能在 Access 中运行 SQL 批处理,再次遍历多个 SQL 语句的方法是在 VBA 中。

Access 不是基于控制台的 RDBMS,您不能像在 SQL Plus 中那样运行批处理脚本,如果您尝试,您肯定会大吃一惊。

Access 是一个应用程序容器和分析工具,所有程序应用程序都使用 VBA 或宏,它们的灵活性明显低于 VBA。如果您确实学习了一些 VBA,您将从 Access 中获得最大收益。如果没有 VBA,访问将受到极大限制,您可以访问的功能是简单的临时查询。

于 2011-05-05T15:05:16.353 回答