サンプルプロシージャでは、非連結のフォームに入力されたデータを基に、
住所録テーブルを更新します。
● 準備 ●
次のテーブルを用意します。
○ 住所録テーブル
----------------------------------------------------------
フィールド名 データ型 サイズ (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の
チェックを持ってきて下さい。
|