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

レコードの削除 - Deleteメソッド : ADO入門講座



レコードを追加すれば、当然削除する機能も必要になります。ここでは、ADOのDeleteメソッドを用いてレコード(カレントレコード)を削除する方法をご紹介します。

留意点
  • Deleteメソッドでレコードを削除できるのは、カレントレコードのみです。
  • 目的のレコードを削除する場合は、Move系やFind系メソッドでカレントレコードに移動させる必要があります。
  • レコードを削除する際に警告メッセージ等は表示されません。
  • 削除したレコードを元に戻すことはできません。

Deleteメソッドの構文

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

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

項目 意味
Recordsetオブジェクト 開いているRecordsetオブジェクト

 

解説
  • Deleteメソッドで削除を行った後はカレントレコードが未定義になっています。よって、カレントレコードを参照しようとした場合はエラーが発生します。
    これを防ぐには、Move系メソッドでカレントレコードを移動する必要があります。

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

サンプルテーブルを以下のように作成します。レコード数は9件あります。

サンプルテーブル(T_sample)
ID 売上日 社員名 性別 売上額
6 2004/01/23 橘修平 男性 52100
5 2004/02/04 柴田喜一 男性 654100
8 2004/03/25 正道良一 男性 4875210
1 2004/07/29 草薙良子 女性 120310

Subプロシージャの作成

汎用的に利用するためにSubプロシージャを作成します。

1レコードの削除

カレントレコードを確認しながら、1件のレコードを削除します。

Sub ADO_Delete()

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim vardat As Variant
    Dim strmsg As String
    Set cn = CurrentProject.Connection
    Set rs = New ADODB.Recordset
    
    rs.Open "T_Sample", cn, adOpenKeyset, adLockOptimistic
    strmsg = rs!売上日 & vbNewLine & _
             rs!社員名 & " のレコードを削除します。"
    
    If MsgBox(strmsg, vbCritical + vbOKCancel) = vbOK Then
        rs.Delete
        MsgBox "削除を完了しました。"
    Else
        MsgBox "削除を中止しました。"
    End If
        
    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing

End Sub
実行結果
  1. このプロシージャをイミディエイト画面上で実行します。
  2. 削除確認のメッセージが表示されます。

  1. [OK]をクリックします。
  2. 以下のように先頭のレコードが削除されています。
ID 売上日 社員名 性別 売上額
5 2004/02/04 柴田喜一 男性 654100
8 2004/03/25 正道良一 男性 4875210
1 2004/07/29 草薙良子 女性 120310
全レコードの削除

全レコードを削除します。Loopを用いて全てのレコードを一旦カレントレコードに切り替え、削除しています。

Sub ADO_AllDelete()

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim vardat As Variant
    Dim strmsg As String
    Set cn = CurrentProject.Connection
    Set rs = New ADODB.Recordset
    
    rs.Open "T_Sample", cn, adOpenKeyset, adLockOptimistic
    strmsg = rs.RecordCount & " 件の全レコードを削除します。"
    If MsgBox(strmsg, vbCritical + vbOKCancel) = vbOK Then
        Do Until rs.EOF
            rs.Delete
            rs.MoveNext
        Loop
        MsgBox "削除を完了しました。"
    Else
        MsgBox "削除を中止しました。"
    End If
        
    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing

End Sub
実行結果
  1. このプロシージャをイミディエイト画面上で実行します。
  2. 削除確認のメッセージが表示されます。

  1. [OK]をクリックします。
  2. 全てのテーブルレコードが削除されます。
削除てきないレコード

RecordsetオブジェクトのLockTypeプロパティの値が、adLockReadOnlyとなっている場合は、レコードを削除することはできません。

関連ページ

2005/06/30

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


レコードの削除 - Deleteメソッド : ADO入門講座


 

-Microsoft Access Club-

注目のモンスター専用サーバーからお買い得プランまで幅広くそろえています。cPanel、PLESK、WEBMINまでお任せ下さい。
注目のモンスター専用サーバーからお買い得プランまで幅広い。
cPanel、PLESK、WEBMINまでお任せ下さい。