Microsoft Access Club >ADO入門講座 >このページ >次頁 < 前項  サイト内検索
 

新規レコードを作成し複数フィールドに値を追加 - AddNewメソッド : ADO入門講座



前頁では、単一のフィールドにデータを追加するAddNewメソッドをご紹介しました。今回は、新規レコードを作成し同時に複数のフィールドにデータを追加する方法をご紹介します。ポイントは、AddNewメソッドとUpdateメソッドを組み合わせることです。

留意点
  • AddNewメソッドを実行した後は、そのレコードがカレントレコードになります。
  • 開いているRecordsetオブジェクトのLockTypeプロパティの値がadLockReadOnlyの場合は、新しいレコードを追加できません。
  • Updateメソッドを実行しないと、レコードが追加されません。

AddNewメソッドの構文

AddNewメソッドの構文は、以下のような組み合わせになります。

Recordsetオブジェクト + .(ドット) + AddNewメソッド

項目 意味
Recordsetオブジェクト 開いているRecordsetオブジェクト
解説
  • Updateメソッドと共に使用する場合、引数は不要です。

Updateメソッドの構文

Updateメソッドの構文は、以下のような組み合わせになります。

Recordsetオブジェクト + .(ドット) + Updateメソッド

項目 意味
Recordsetオブジェクト 開いているRecordsetオブジェクト
解説
  • AddNewメソッドと共に使用する場合、引数は不要です。

複数フィールドに値を追加する

サンプルテーブルを以下のように仮定します。

サンプルテーブル
売上日 社員名 性別 売上額 職種
2004/01/23 橘 修平 男性 52100 一般職
2004/02/02 柴田 喜一 男性 654100 技能職
2004/12/31        

Subプロシージャの作成

全ての複数フィールドでNullを許可している場合は、以下のようなサンプルプロシージャを作成します。 このプロシージャを実行すると、T_sampleテーブルに新規レコードが追加され、各フィールドに設定した値が代入されます。

Sub ADORecordsetAddNew()

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim varBM As Variant
    Dim mySQL As String
    
    Set cn = CurrentProject.Connection
    Set rs = New ADODB.Recordset
    
    rs.Open "T_sample", cn, adOpenKeyset, adLockOptimistic
    rs.AddNew
        rs!売上日 = Date 'Date関数で本日の日付を代入します。
        rs!社員名 = "町田純一"
        rs!性別 = "男性"
        rs!売上額 = 144200
    rs.Update
        
    Debug.Print "追加レコード一覧"
    Do Until rs.EOF '追加レコードを表示します。
        Debug.Print rs!売上日, rs!社員名, rs!性別, rs!売上額
        rs.MoveNext
    Loop
        
    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing

End Sub
実行結果

このプロシージャをイミディエイト画面上で実行すると、以下のレコードがイミディエイト画面に表示されます。

ADORecordsetAddNew '実行する
追加レコード一覧
2005/01/01    町田純一      男性           144200 

ちょっと一服

質問

イミディエイト画面に追加したフィールドだけが表示されるのは何故か、分かりますか?

回答

AddNewメソッドを実行すると、新規レコードは一番最後に追加されます。そして、このレコードがカレントレコードになります。よって、このレコードの後ろには既存のレコードがないので、表示されるのは追加されたレコードのみになる訳です。

対策

全てのレコードデータを表示させたい場合は、以下のようにrs.MoveFirstの一行を追加します。

    rs.Open "T_sample", cn, adOpenKeyset, adLockOptimistic
    rs.AddNew
        rs!売上日 = Date 'Date関数で本日の日付を代入します。
        rs!社員名 = "町田純一"
        rs!性別 = "男性"
        rs!売上額 = 144200
    rs.Update
        
    rs.MoveFirst
    
    Debug.Print "追加レコード一覧" 'ここから
    Do Until rs.EOF '追加レコードを表示します。
        Debug.Print rs!売上日, rs!社員名, rs!性別, rs!売上額
        rs.MoveNext
    Loop

関連ページ

 

2005/01/01

ページの先頭へ 前ページへ戻る


新規レコード追加 - AddNewメソッド : ADO入門講座


 

-Microsoft Access Club-

アメリカ合衆国やヨーロッパのデータセンターからcPanelレンタルサーバーをご提供します。お支払いは日本国内の銀行振込で...。1ヵ月契約からOKです。
アメリカ合衆国やヨーロッパからcPanelレンタルサーバー。
お支払いは日本国内の銀行振込。
最短契約期間は1ヵ月契約からOKです。