最後に「テーブルの削除」機能を実装しよう。
テーブル作成フォームの「デザインビュー」に切り替えて、以下のようなテーブル作成フォームを追加する(図8)。
これまでと同様に「テキストボックス」と「ボタン」コントロールを1セット配置し、書式を設定していこう。
テキストボックスのラベルの標題は「削除するテーブル」、テキストボックス本体の名前は「削除テーブルテキストボックス」、同じくボタンの名前は「実行ボタン」と指定する。その他、フォント名、フォントサイズ、フォント太さなどの書式は、各自これまでと同様に設定してほしい。
テーブル削除フォームで配置するコントロールは以下の通りだ。
コントロールの種類 | 名前 |
---|---|
テキストボックス | 削除テーブルテキストボックス |
ボタン | 実行ボタン |
コードの記述方法の手順もこれまでと同じだ。
「作成実行ボタン」を選択した状態で、プロパティシート→「イベント」タブをクリックする。「▼」アイコンで[イベントプロシージャ]を選択し、「…」アイコンをクリック。VBAで生成されたコードを、リスト3のコードに書き換える。
Private Sub 実行ボタン_Click() Dim db As DAO.Database Dim myTable As DAO.TableDef Dim tableName As String If IsNull(削除テーブルテキストボックス.Value) Then MsgBox ("テーブル名を入力してください。") Exit Sub End If On Error GoTo エラー Set db = CurrentDb tableName = 削除テーブルテキストボックス.Value db.TableDefs.Delete Name:=tableName db.Close Set db = Nothing MsgBox (削除テーブルテキストボックス.Value & "を削除しました。") Exit Sub(A) エラー: MsgBox ("エラーです") Exit Sub End Sub
リスト3のコードは、前述したエラー処理付きで記述してある(10行目、20〜22行目)。
このエラー処理は、指定したテーブルが開いている場合には、「エラー:ラベル」内を実行し、「エラーです。」と表示して処理を抜けるものだ。前述したリスト1、リスト2にもこのエラー処理を追加する応用も試してほしい。なお、「エラー:ラベル」の前に(A)のように(19行目)、Exit Subで処理を抜けるようにしておかないと、テーブルが正常に削除された後でも「エラーです」のメッセージが表示されるので、ここの部分は注意してほしい。
この他は、以下のように記述してある。
フォームビューに移って、追加した機能を確認しよう。
削除するテーブル欄に「商品管理」と入力して、「実行」ボタンを押すと、削除した旨のメッセージが表示され、商品管理テーブルが削除される(図9)。
以上、「DAO」を使い、VBAでデータベースの「テーブル作成」と「フィールドの作成/追加」「テーブル削除」の機能を追加し、その処理の流れを解説した。
今回は「Accessのメニューを使わずに」がポイントだ。VBAでテーブルや定義のフォームを作成し、入力するだけで「テーブル」や「フィールド」が作成できるようにしておけば、自分以外の、Accessの操作に慣れていない人でも、簡単にデータベースに触れられるようになる。ぜひ実践でも取り入れてほしい。
次回は、「レコード処理」について解説する。お楽しみに。
薬師寺国安事務所代表。Visual Basicプログラミングと、マイクロソフト系の技術をテーマとした、書籍や記事の執筆を行う。
1950年生まれ。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。
1997年に薬師寺聖とコラボレーション・ユニット「PROJECT KySS」を結成。
2003年よりフリーになり、PROJECT KySSの活動に本格的に参加。.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。
Windows Phoneアプリ開発を経て、現在はWindowsストアアプリを多数公開中。
Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)
Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)
Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)
Microsoft MVP for Development Platforms-Windows Platform Development (Oct 2014-Sep 2015)
Copyright © ITmedia, Inc. All Rights Reserved.