Microsoft Access 掲示板

サブクエリ(exists)を使った最大値、最小値の抽出 / 6

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

履歴データなので基本的には消せないのですが、
ワークテーブルを使って削除するか、もしくはフラグを立てて読み飛ばすかということを
したいなと。いずれにしても更新を想定しています。

データベースなので履歴データは基本は削除しない運用が望ましいですね。
ワークテーブルを使うのなら、上記の集計クエリを含むクエリを追加クエリにして追加すればすみます。

フラグフィールドを追加してそれを更新するなら、EXISTSサブクエリを使用した更新クエリにすることになりますが、
自分がするなら、前回の質問でも回答しましたが、VBAでレコードセットを回して更新する方法をとります。

Public Sub SetFlag()
    Dim rs As DAO.Recordset
    Dim strSQL As String
    Dim pre社員No
 
    CurrentDb.Execute "UPDATE Mtbl_所属歴 SET flg削除 = False WHERE flg削除 = =True;"
    
    strSQL = "SELECT * FROM Mtbl_所属歴 ORDER BY 社員No, 開始日, 終了日;" 
    Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset, dbFailOnError) 
    Do Until rs.EOF
        If pre社員No <> rs!社員No Then
            pre社員No = rs!社員No
            rs.Edit
            rs!flg削除 = True
            rs.Update
            rs.MovePrevious
            rs.Edit
            rs!flg削除 = True
            rs.Update
            rs.MoveNext
        ElseIf 特定の名称が含まれる Then
            rs.Edit
            rs!flg削除 = True
            rs.Update
        End If 
        rs.MoveNext
    Loop 
    rs.Close
    Set rs = Nothing
 
    MsgBox "完了"
End Sub

SQLでいくか、VBAでいくかは、得意不得意があると思いますので、好みでいいと思います。

通報 ...