次は「フィールドを追加」する機能を配置しよう。
フォーム画面を表示し、「テーブル作成フォーム」を選択して、マウスの右クリックで表示されるメニューから「デザインビュー」を選択する。フォームのデザイン画面が表示されるので、図1のフォーム内に、追加するフィールドを入力するための「テキストボックス」と「ボタン」を1セット追加する(図6)。
コントロールの配置と設定項目は、これまでとほぼ同じだ。「テキストボックス」の左に表示されるラベルを選択し、プロパティシートより標題は「追加するフィールド」、フォント名は「Meiryo UI」、フォントサイズは「12」、フォント太さは「太字」を指定する。続いて「テキストボックス」本体の書式も、フォントサイズ「14」、フォント名とフォント太さはラベルと同じ書式に設定。「その他」タブの名前には「フィールドテキストボックス」と指定する。
続いて「ボタン」コントロールの書式も、フォント名、フォントサイズ、フォント太さは前述したテキストボックスと同じ設定にしてほしい。表題は「追加」に、「その他」タブの名前には「追加ボタン」と指定する。
図6で配置するコントロールは以下の通りだ。
| コントロールの種類 | 名前 |
|---|---|
| テキストボックス | フィールドテキストボックス |
| ボタン | 追加ボタン |
これまでと同様に、「フィールド追加」のためのコードを記述していく。
「作成ボタン」を選択した状態で、プロパティシート→「イベント」タブをクリックする。「▼」アイコンで[イベントプロシージャ]を選択し、「…」アイコンをクリックするとVBEが開き、
Private Sub 追加ボタン_Click()
End Sub
のコードが生成される。これをリスト2のコードに書き換える。
Private Sub 追加ボタン_Click()
Dim db As DAO.Database
Dim myTable As DAO.TableDef
Dim myField As DAO.Field
Dim myFieldName As String
If IsNull(フィールドテキストボックス.Value) Then
MsgBox ("フィード名を入力してください。")
Exit Sub
End If
Set db = CurrentDb
Set myTable = db.TableDefs("商品管理")
myFieldName = フィールドテキストボックス.Value
Set myField = myTable.CreateField(Name:=myFieldName, Type:=dbText, Size:=50)
myTable.Fields.Append Object:=myField
Set myTable = Nothing
db.Close
Set db = Nothing
MsgBox (フィールドテキストボックス.Value & "フィールドを追加しました。")
End Sub
リスト2のコードは、以下のように記述してある。
TableDef.CreateField(Name:=一意のフィールド名,Type:=表1の値,Size:=最大サイズをバイト単位で指定(Integer))
「フォームビュー」に移って、正しく動作するかを確認しよう。なお、「商品管理」テーブルが開かれているとエラーになるので、実行前にこのテーブルは右クリックメニューなどで閉じておいてほしい。
追加するフィールド欄に「在庫」と入力して、「追加」ボタンを押す。「フィールド」追加のメッセージが表示された後、テーブルに「在庫」という名前のフィールドが新たに追加された(図7)。
これまでのコードには、エラー処理を設けていない。同じ「テーブル名」や「フィールド名」が存在したまま「追加ボタン」をクリックすると、エラーが発生することには注意してほしい。
ちなみに、エラー処理は、
On Error GoTo エラー エラー: Msgbox(“エラーです。”) Exit Sub
の処理で実装できるので、慣れてきたら各自で試してほしい(実装の仕方は後述する)。
どんなビジネスにも欠かせないリレーショナルデータベースの基礎知識と作り方――テーブル、レコード、フィールド、主キーとは
Access VBAでデータ入力フォームを作り、各コントロールを追加するためのデザインビューの使い方
Accessを使うなら最低限知っておきたいSQL文を使ったさまざまな種類のクエリ操作の基本
初心者でも図解で分かる! VBEの基本的な使い方とVBAプログラムの基礎文法
Accessでフォームからデータを追加し、Excelのシートにエクスポートする
SQLとはどういう言語か
数値判定、乱数発生、数値の丸めなど、数値に関する4つの関数の使い方
制御文で道案内
使うほどに良さが分かる正規表現
.NET Frameworkがサポートする正規表現クラスを徹底活用する(前編)
.NET Frameworkがサポートする正規表現クラスを徹底活用する(後編)Copyright © ITmedia, Inc. All Rights Reserved.