■ 概要 ■
サンプルプロシージャでは、非連結のフォームに入力されたデータを基に、住所録テーブルを更新します。
■ 手順 ■
次のテーブルを用意します。
○ 住所録テーブル
----------------------------------------------------------
フィールド名 データ型 サイズ (AC97の場合)
----------------------------------------------------------
ID オートナンバー
氏名 テキスト型 20文字 40バイト
会社名 テキスト型 40文字 80バイト
郵便番号 テキスト型 8文字 8バイト
住所 テキスト型 100文字 200バイト
電話番号 テキスト型 13文字 13バイト
年齢 整数型 Integer
----------------------------------------------------------
次に住所録フォームを作成しますが、フォームを作成する方法には2種類あります。
(1) オートフォームを使用し、住所録テーブルをレコードソースにした連結フォームを作成する。その後にレコードソースと各テキストボックスのコントロールソースを削除(空白に)する。
(2) フォームの新規作成から「デザイン」を選択し、住所録テーブルの全てのフィールドに対応するテキストボックスを作成する。
どちらで作っても良いですが、オートフォームを使ったほうが簡単でしょう。
■ サンプルコード ■
データを追加するため、フォームフッターに[保存]、[クリア]、 [閉じる]という名前の3つのコマンドボタンを作成します。
各コマンドボタンのクリック時イベントには、には以下のプロシージャを記述します。
Private Sub 保存_Click()
Dim Rst As DAO.Recordset
Set Rst = CurrentDb.OpenRecordset("住所録テーブル", dbOpenTable)
With Rst
.AddNew
.氏名 = Me.氏名
.会社名 = Me.会社名
.郵便番号 = Me.郵便番号
.住所 = Me.住所
.電話番号 = Me.電話番号
.年齢 = Me.年齢
.Update
End With
Call ClearControls
Rst.Close
Set Rst = Nothing
End Sub
Private Sub クリア_Click()
Call ClearControls
End Sub
Private Sub 閉じる_Click
DoCmd.Close acForm, "住所録フォーム", acSaveNo
End Sub
Sub ClearControls()
Dim Ctl As Control
For Each Ctl In Me.Controls
If Ctl.ControlType = acTextBox Then
Ctl = Null
End If
Next
End Sub
■ 詳細 ■
非連結フォームのデータでテーブルを更新するためには、DAOのレコードセットを使用します。
AddNewメソッドを使用して新しいレコードを挿入し、各テキストボックスに入力された値をレコードセットに代入していきます。
最後にUpdateメソッドでレコードセットを更新し、ClearContorlsプロシージャで全てのコントロールをクリアします。
ClearControlsプロシージャは、フォームのテキストボックスを一括でクリアするためのサブルーチンです。
フォームプロシージャの中に記述して下さい。
For Each...Next構文でフォームのControlsコレクション中の全てのコントロールを参照し、コントロールがテキストボックスの場合にのみ、内容をクリアします。
■ 備考 ■
Access2000の場合、デフォルトではDAOに参照設定されていません。
Visual Basic Editor(VBE)を開き、メニューの[ツール]−[参照設定]から、Microsoft DAO 3.6 Object Libraryにチェックを入れて下さい。
その際にMicrosoft ActiveX Data Object 2.1 Libraryよりも上に、DAOのチェックを持ってきて下さい。