Recordsetでレコードを更新する方法|EditとUpdate - Access VBA入門

Recordsetを更新するには、Editメソッドで準備後、Updateメソッドで保存します。更新した後で、元に戻すことはできません。

BackHome BackVBA入門

ここでは商品入荷一覧表フォームに、VBAで文字列の置換えを行う機能を追加します。
「焼きそば」を指定した文字列に置き換えます。
実行はFilterのLikeであいまい検索し、その結果抽出されたレコードのデータを、Replaceで指定した文字に置換え更新します。
Recordsetでレコードを修正するも参照してください。




下のような商品入荷一覧表のフォームを作成しました。
「焼きそば」の文字を、次に更新のテキストボックスに入力された文字列に置換え保存します。
「焼きそば」の文字を、テキストボックスに入力された文字列に置換え保存する

Recordsetでレコードを更新する

Filterであいまい検索し、文字列を置換え保存するVBAです。
Filterであいまい検索し、文字列を置換え保存するVBA

・フォームのレコードソースのテーブルでRecordsetを作成します。
・FilterとLikeであいまい検索し、商品名に「焼きそば」が含まれるレコードを抽出します。
・Do Loopのループで順に更新します。
・Editで更新の準備を行います。
・Replaceで、「焼きそば」をテキストボックスに入力された文字列に置換えます。
・置換えた結果を代入します。
・Updateで更新します。

Private Sub コマンド15_Click()
    Dim rs As Recordset
    Dim rsf As Recordset
    Dim s1 As String
    
    Set rs = CurrentDb.OpenRecordset("T-商品入荷一覧表 のコピー", dbOpenDynaset)

    rs.Filter = "商品名 Like '*" & "焼きそば" & "*'"
    Set rsf = rs.OpenRecordset
    If rsf.RecordCount = 0 Then
        MsgBox "該当するレコードが見つかりませんでした。2"
    Else
        Do Until rsf.EOF
            rsf.Edit
            s1 = rsf!商品名
            s1 = Replace(s1, "焼きそば", Me!テキスト11, vbTextCompare)
            rsf!商品名 = s1
            rsf.Update
            rsf.MoveNext
        Loop
    End If
    rsf.Close
    Set rsf = Nothing
    rs.Close
    Set rs = Nothing
    
    Me.Requery
End Sub

BackHome BackVBA入門

Copyright(C) FeedSoft