Microsoft Access 掲示板

For文のループがエラーになる / 4

6 コメント
views
4 フォロー
4

2つの案が考えられます。

第一案

フォームのレコードセットを操作して更新する。

フィールド名は F1, F2, F3, F4 と仮定してます。

Sub Sample1()
    Dim rs As DAO.Recordset
    Set rs = Me.Recordset.Clone
    rs.MoveFirst
    Do Until rs.EOF
        rs.Edit
        rs!F1 = rs!F2 & rs!F3 & rs!F4
        rs.Update
    rs.MoveNext
    Loop
    Me.Recalc
    rs.Close: Set rs = Nothing
End Sub

フォーのレコードセットの扱いについては下記をご参考に。

フォームの Recordset, RecorsetClone, RecordSet.Clone の違いとは? - hatena chips

第2案

フォームのFilterプロパティで抽出条件を取得して、それを利用して更新クエリを実行する。

フォームのレコードソースのテーブル名はTbl1と仮定

Sub Sample2()
    Dim stSQL As String
    stSQL = "UPDATE Tbl1 SET F1 = F2 & F3 & F4"
    If Me.FilterOn And Me.Filter <> "" Then
        stSQL = stSQL & " WHERE " & Me.Filter
    End If
    CurrentDb.Execute stSQL
    Me.Requery
End Sub
通報 ...