データベースのレコードを削除する
Delete メソッド
カレントレコードを削除します。
【書式】
object.Delete
引数・戻り値
- object ・・・ 対象となる Recordset オブジェクトを指定します。
レコードを削除する場合、Recordset オブジェクトのOpen メソッドの引数 LockType には、adLockOptimistic または adLockPessimistic を指定します。(Recordset を開く時に使うロックの種類に関しては、データベース(Access 等)に接続(ADO) を参照して下さい。)
カレントレコードは、レコード削除後も「削除されたレコード」として存在するレコードになります。この状態で、カレントレコードに対して処理を行うと、エラーが発生します。( MoveNext メソッド 等を使ってカーソルを移動する必要があります。)
Delete メソッド 使用例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
Sub Sample_Delete() '参照設定:Microsoft ActiveX Data Objects 6.1 Library Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim constr As String Dim DBFile As String Dim i As Long Dim j As Long DBFile = ActiveWorkbook.Path & "\mydb1.accdb" constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBFile Set cn = New ADODB.Connection cn.ConnectionString = constr cn.Open Set rs = New ADODB.Recordset With rs 'テーブルを開く .Source = "テーブル1" .ActiveConnection = cn .CursorType = adOpenKeyset 'キーセットカーソル使用 .LockType = adLockPessimistic 'レコード単位排他的ロック .Open 'ID=1 のレコードにカーソルを移動 .Find "ID = 1", 0, adSearchForward 'カレントレコードを削除 .Delete End With With Worksheets("Sheet1") rs.MoveFirst i = 1 .Cells.Clear Do Until rs.EOF For j = 0 To rs.Fields.Count - 1 If i = 1 Then .Cells(i, j + 1) = rs(j).Name .Cells(i + 1, j + 1) = rs(j).Value Next j rs.MoveNext i = i + 1 Loop End With rs.Close Set rs = Nothing cn.Close Set cn = Nothing End Sub |