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


カレントレコードの追加 : DAO入門講座



今回は、レコードの追加を取り上げます。テーブルにレコードを追加するには、AddNewメソッドとUpdateメソッドを用います。

  • 但し、レコードを追加できるのはテーブルタイプ、またはダイナセットタイプのRecordsetオブジェクトだけです。スナップショットタイプは読み取り専用なので レコードを追加することができません。

AddNewメソッド、Updateメソッド

基本形としては、編集する内容をAddNewメソッドとUpdateメソッドの間に記述します。

  • AddNewメソッドは、レコードを追加する領域を確保するメソッドです。
  • Updateメソッドは、追加されたレコードを保存するメソッドです。
    • Updateメソッドを実行せずにカレントレコードを移動した場合、Recordsetオブジェクトを閉じた場合などは、編集内容が失われますので注意して下さい。

追加される位置

AddNewメソッドを用いてレコードが追加される位置が、Recordsetオブジェクトの種類によって異なります。

  • テーブルタイプのレコードセット(インデックスなし) → Recordsetオブジェクトの一番最後に追加される。
  • テーブルタイプのレコードセット(インデックスあり)  → インデックス情報に従って適切な位置に挿入されます。
  • ダイナセットタイプのレコードセット → Recordsetオブジェクトの一番最後に追加されます。

事例 - テーブルの作成

ご紹介する事例は、InputBoxステートメントを用いてレコードを追加するものです。では、サンプルテーブルである取引先リストテーブルを作成します。

Subプロシージャの作成

下記のプロシージャは、取引先リストテーブルに新規の取引先を追加します。

Sub AddNewSample()

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim varRet As Variant
    Dim strMsg As String
    
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("取引先リスト")
    varRet = InputBox("取引先を追加します。") ' --- A
    strMsg = "取引先 " & varRet & " を追加します。"
    
    If varRet = "" Then MsgBox "取引先が空白です。": Exit Sub ' --- B
   
    If MsgBox(strMsg, vbCritical + vbOKOnly) = vbOK Then
        rs.AddNew
        rs!取引先 = varRet
        rs.Update
    End If
        
    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
    
End Sub
解説
  1. InputBoxステートメントを用いて、ユーザーが追加する取引先を入力します。
  2. ユーザーによっては、[キャンセルボタン]を押したり、空白のまま[OK]ボタンを押した場合を想定して、以降の進行をキャンセルします。
実行結果

空のレコードを追加する際の留意点

空白のレコードのみを追加することもできます。この場合、テーブルフィールドプロパティで値要求欄が はい になっていると、下記のようなエラーが発生しますので、空レコードを追加することはできません。

Sub AddNewSample()

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("取引先リスト")
    
    rs.AddNew
    rs.Update
        
    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
    
End Sub
実行結果

下図のように実行時エラー3314が発生します。

これは、テーブルフィールドプロパティの「値要求」設定が、下記のように はい になっているからです。

追加クエリの利用

  • クエリの作成で、追加クエリを用いてレコードを追加することも可能です。簡易度の面からは、クエリ利用の方がベターです。

 

2004/05/11

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

 


カレントレコードの追加 : DAO入門講座


 

-Microsoft Access Club-

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