次は「フィールドを追加」する機能を配置しよう。
フォーム画面を表示し、「テーブル作成フォーム」を選択して、マウスの右クリックで表示されるメニューから「デザインビュー」を選択する。フォームのデザイン画面が表示されるので、図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
の処理で実装できるので、慣れてきたら各自で試してほしい(実装の仕方は後述する)。
Copyright © ITmedia, Inc. All Rights Reserved.