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;}{動作確認}$