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


カレントレコードの削除 : DAO入門講座



今回は、レコードの削除を取り上げます。テーブルからレコードを削除するには、Deleteメソッドを用います。

  • 但し、レコードを削除できるのはテーブルタイプ、またはダイナセットタイプのRecordsetオブジェクトだけです。
    スナップショットタイプは読み取り専用なので レコードを削除することができません。
  • 削除されるレコードは、カレントレコードの位置にあるレコードだけです。
    テーブルの全レコードを削除するような場合は、Loop機能を用いて削除するレコードをカレントレコードの位置に移動(Move系メソッド)させてから行います。
  • 削除したレコードを復活させることはできません。
  • 削除する際に、警告メッセージは表示されません。

事例 - テーブルの作成

ご紹介する事例は、全レコードを削除するものです。では、サンプルテーブルである取引先リストテーブルを作成します。

Subプロシージャの作成

下記のプロシージャは、選択クエリのSQLを用いてダイナセットタイプのRecordsetオブジェクトを作成します。

Sub Query_Delete()
        
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim MySQL As String
    Dim strMsg As String
    
    Set db = CurrentDb()
    
    MySQL = "SELECT * FROM 取引先リスト;" ' --- A
    strMsg = "全レコードを削除します。"
    
    Set rs = db.OpenRecordset(MySQL) ' ---B
    
    If MsgBox(strMsg, vbCritical + vbOKCancel) = vbOK Then ' --- C
        Do Until rs.EOF ' --- D
            rs.Delete
            rs.MoveNext
        Loop
    End If
    
    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
        
End Sub
解説
  1. 選択クエリのSQLを記述します。アスタリスト(*)は、全フィールドを表します。
  2. OpenRecordsetメソッドにSQLを指定すると、ダイナタイプのRecordsetオブジェクトが既定で開かれます。
  3. レコードが削除される時に、警告メッセージは表示されませんので、Ifステートメントで条件分岐を行っています。
  4. Loopを用いて、全レコードをカレントレコードに移動させ削除します。
実行結果

すてべのレコードが削除されます。

  • この時点でのカレントレコードは、未定義の状態になっています。

削除クエリの利用

  • テーブルレコードを削除するのは、削除クエリを用いて行う方が高速で処理できます。削除クエリを用いると、レコードを削除する際に警告メッセージが表示され 安全です。

 

2004/05/12

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

 


カレントレコードの削除 : DAO入門講座


 

-Microsoft Access Club-

アダルト・ゲーム配信可能なPLESKパネル付属の専用・共有レンタルサーバーを提供しています。
アダルトやゲーム配信が可能です。
全専用/共有レンタルサーバーにPLESKパネルをインストール済み。