非連結のフォームでデータを追加する(DAO)

  サンプルプロシージャでは、非連結のフォームに入力されたデータを基に、
住所録テーブルを更新します。


● 準備 ●

次のテーブルを用意します。
○ 住所録テーブル
----------------------------------------------------------
フィールド名    データ型        サイズ      (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の
チェックを持ってきて下さい。


Access97/2000



戻る


Excel Word Access VBA! モーグ