検索
連載

DAO基礎テクニック──VBAでAccessデータベースの「テーブル/フィールドの作成、削除」を実践Access VBAで学ぶ初心者のためのデータベース/SQL超入門(10)(4/4 ページ)

Accessを通じて、初心者がリレーショナルデータベースやSQLの基本を学び、データベースを使った簡単なシステムの作り方を習得する本連載。今回は、VBAでAccessフォームにデータベースの「テーブル/フィールドの作成、削除」機能を配置するテクニックをお伝えする。

Share
Tweet
LINE
Hatena
前のページへ |       

「テーブルを削除」する機能を配置する

 最後に「テーブルの削除」機能を実装しよう。

 テーブル作成フォームの「デザインビュー」に切り替えて、以下のようなテーブル作成フォームを追加する(図8)。

photo 図8 テーブル削除フォームを作成する

 これまでと同様に「テキストボックス」と「ボタン」コントロールを1セット配置し、書式を設定していこう。

 テキストボックスのラベルの標題は「削除するテーブル」、テキストボックス本体の名前は「削除テーブルテキストボックス」、同じくボタンの名前は「実行ボタン」と指定する。その他、フォント名、フォントサイズ、フォント太さなどの書式は、各自これまでと同様に設定してほしい。

 テーブル削除フォームで配置するコントロールは以下の通りだ。

配置するコントロール
コントロールの種類 名前
テキストボックス 削除テーブルテキストボックス
ボタン 実行ボタン

VBEで「テーブル削除」のためのコードを記述する

 コードの記述方法の手順もこれまでと同じだ。

 「作成実行ボタン」を選択した状態で、プロパティシート→「イベント」タブをクリックする。「▼」アイコンで[イベントプロシージャ]を選択し、「…」アイコンをクリック。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:「削除実行」ボタンがクリックされた時の処理

 リスト3のコードは、前述したエラー処理付きで記述してある(10行目、20〜22行目)。

 このエラー処理は、指定したテーブルが開いている場合には、「エラー:ラベル」内を実行し、「エラーです。」と表示して処理を抜けるものだ。前述したリスト1、リスト2にもこのエラー処理を追加する応用も試してほしい。なお、「エラー:ラベル」の前に(A)のように(19行目)、Exit Subで処理を抜けるようにしておかないと、テーブルが正常に削除された後でも「エラーです」のメッセージが表示されるので、ここの部分は注意してほしい。

 この他は、以下のように記述してある。

  • 2〜3行目:Database型の変数dbを宣言する。TableDef型の変数myTableを宣言する。TableDefは、個々のテーブルの定義情報を格納しているクラスだ。
  • 5〜7行目:テーブル名が未入力だった場合は、警告メッセージを出して処理を抜ける。
  • 11〜12行目:カレントデータベースを参照するdbオブジェクトを作成し、変数tableNameに削除テーブルテキストボックスの内容を格納する。
  • 14行目:Deleteメソッドで指定したテーブル名を削除する。削除する場合には「名前付き引数」でdb.TableDefs.Delete Name:=tableNameと指定している。

実際に「フィールド」を削除し、動作を確認する

 フォームビューに移って、追加した機能を確認しよう。

 削除するテーブル欄に「商品管理」と入力して、「実行」ボタンを押すと、削除した旨のメッセージが表示され、商品管理テーブルが削除される(図9)。

photo 図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.

前のページへ |       
ページトップに戻る