1

Access 2003 で 180 のテーブルのうち 175 を削除する必要があります (Access 2000 形式のデータベースを使用)。私が最初に試したのは、テーブルリストに移動してすべてを選択しようとし、保持したいものをコントロールクリックして、「削除」を選択することでした. ただし、一度に選択できるのは 1 つだけです。

次に、すべてのテーブル名のリストをプレーン テキストとして取得する方法を見つけ、dropVim を使用して一連のステートメントを作成しました。

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

(明らかに、これらは実際の名前ではありません。) これらのステートメントは、単独では問題なく動作します (つまり、一度に 1 つ実行するだけですが、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 に答える