PR

Access DAO テーブルを検索して削除する方法

DAO

Accessでデータ処理をする際にワーキングテーブルとして一時的に用いるテーブルを作成することがあります。以下の記事では、DAOを用いたテーブル作成方法を紹介しています。

作成したテーブルはそのままにせず、削除することで保守性を高めると同時に、不用意な容量増加を防ぐことができます。

今回は、DAOを用いて対象テーブルの有無を確認し、対象テーブルがあった場合に削除する方法を紹介します。

サンプルとしては、すでに作成されている「WT_サンプルテーブル」(上述の紹介記事でDAOを用いたテーブル作成方法の際に出来上がったテーブルです。詳しくは、そちらの記事をご確認ください。)を削除する流れとします。

スポンサーリンク

コードの実装

さて、さっそくDAOを用いたテーブル削除のコードを図1のように実装をしていきます。

図1 DAOによるテーブル削除のコードサンプル

ここで、今回作成するサンプルのコードは以下のようにしました。

Private Sub Table_Delete()

'対象テーブル名を格納する変数を宣言
Dim strtbl As String

'削除するテーブルを決める。
strtbl = "WT_サンプルテーブル"

'テーブル削除の確認
If MsgBox(strtbl & "を削除しますか?", vbYesNo) = vbNo Then

  Exit Sub

End If

'DAO用変数の宣言
Dim db As DAO.Database
Dim tbldef As DAO.tabledef

'カレントデータベースへの接続
Set db = CurrentDb()

'対象となるテーブルの有無を確認する。
'TableDefsコレクションでデータベースのテーブルを一つずつ
'取得し、指定したテーブルに一致した
For Each tbldef In db.TableDefs

  If tbldef.Name = strtbl Then
    'テーブルの削除
    db.TableDefs.Delete strtbl
    MsgBox "「" & strtbl & "」を削除しました。"
  End If

Next

'データベースへの接続を閉じる。
db.Close

End Sub

作成したコードの処理を一つずつ確認していきましょう。

まず、削除するテーブル名を格納するための変数を宣言しました。これは、この先何回か削除するテーブル名を用いた処理をしますので、テーブル名を変数に格納しておくことで、その後の保守性を高めています。

続いて、テーブルを削除するかを確認するプロセスです。今回用いるテーブル削除のコードはユーザー側に確認することなく、そのまま処理が進んでしまいますので、誤ってテーブルを削除しないための緩衝材としています。

さて、本題のDAOを用いたテーブル削除のルーチンに来ました。まずは、データベースに接続をし、続いて、Deleteメソッドを用いてテーブルを削除しますが、この際にはデータベースに指定されたTableDefsコレクションから指定したテーブルを対象とします。ただし、対象テーブルが存在しない場合はエラーが返されますので、TableDefsコレクションに対象となるテーブルが存在するかを、予めチェックし、該当するテーブルがあれば削除する処理としました(難しい内容なので、ここでは読み飛ばしていただいて問題ありません。)。

最後に、データベースの接続を閉じて終了となります。

動作確認

さて、作成したコードが実際にどのように動くかを確認していきます。

まずは、図2のように「WT_サンプルテーブル」が存在することを確認します。

図2 DAOによるテーブル削除の動作確認①

図2の状態を確認した後、図1で示すVBA画面に戻り、今回作成した「Table_Delete」プロシージャにカーソルを合わせ、画面上にある「▶」アイコンをクリックしてください。これにより処理が開始されます。

図3 DAOによるテーブル削除の動作確認②

図3に示すように、対象テーブル削除をするか否かのメッセージボックスが表示されますので、「はい」を選択すると、そのまま処理が進み処理が完了したメッセージボックスが改めて表示されます。

図4 DAOによるテーブル削除の動作確認③

これで、一連の処理が完了しましたので、対象テーブルが削除されているかを確認します。図4のように、「WT_サンプルテーブル」がなくなっていれば成功です。

まとめ

今回は、DAOを用いてテーブルを削除する方法を紹介しました。一時的に処理したデータを格納するテーブル等、テーブルを作成しては、削除するといった処理をVBAで実装方法を学ぶと、より高度な処理が可能となり、業務効率を大幅に改善する一助になると思いますので、是非活用してみてください。

ここで紹介した方法は、以下の書籍でも紹介されていますので、ご参考になさってください。

スポンサーリンク

Kindle Unlimitedにサインアップして無料体験に登録する
Kindle Unlimitedに登録すると、人気のシリーズ、ベストセラー、名作などに好きなだけアクセスして、シームレスなデジタル読書体験を実現できます。

コメント

タイトルとURLをコピーしました