018. ADOを用いてテーブルやレコードを削除する方法 : VBAのTips解説
Deleteメソッド
Deleteメソッドとは、カレントレコードを削除したり、テーブルやテーブルフィールド、などをコレクションから削除するメソッドです。DAO、ADOともに使用できますが、削除可能なレコードセットであることが必要です。削除を行うテーブルが連鎖削除リレーションの主テーブルである場合、カレントレコードの削除を行う際、外部キー側のテーブルレコードも削除される可能性があります。
 書式
書式
recordset.Delete
 引数
引数
| 引数 | 意味 | 指定 | 
|---|---|---|
| Recordset | 開いているRecordsetオブジェクト変数を指定します | 省略不可 | 
関連項目
- CurrentDbメソッド(DAO)
- TableDefs(DAO)
- Open(ADO)
- MoveNext(ADO)
$\style{background-color:DodgerBlue;}{事例 )ADOを用いて"株式会社"の文字を持つレコードを削除する}$
ADOを用いて"株式会社"の文字を持つレコードを削除します。
- テーブルを作成します。 
 
- ID、取引先フィールドを作成します。
- 連結フォームを作成します。
- ID、取引先テキストボックスを作成します。
- 実行するコマンドボタンを作成します。
$\style{background-color:DodgerBlue;}{コマンドボタンクリック時イベントプロシージャの作成}$
コマンドボタンクリック時イベントプロシージャを以下のように作成します。
コマンドボタンクリック時イベントプロシージャを以下のように作成します。
Private Sub 実行_Click()
   On Error GoTo エラー
   Dim cn As New ADODB.Connection
   Dim rs As New ADODB.Recordset
   Dim strTbl As String
   Dim strMoji As String
   Dim varRet As Variant
   Set cn = CurrentProject.Connection
   strTbl = "納入先マスター"
   strMoji = "株式会社"
   rs.Open strTbl, cn, adOpenKeyset, adLockOptimistic
   Do Until rs.EOF
  If InStr(rs!取引先, strMoji) <> 0 Then '--- A
   rs.Delete
  End If
  rs.MoveNext
   Loop
   Me.Requery '--- B
   rs.Close: Set rs = Nothing
   cn.Close: Set cn = Nothing
   Exit Sub
エラー:
If Err.Number = -2147217900 Then
   MsgBox "該当するテーブルがありません。"
   Else
   MsgBox Err.Number & " : " & Err.Description
End If
End Sub
解説
- 
A.InStr関数は指定した文字が見つからなかった時、0を返します。 
B.削除したレコードをフォーム上から排除します。
$\style{background-color:DodgerBlue;}{動作確認}$


