hatena
hatena
2024/04/04 (木) 15:42:49
履歴データなので基本的には消せないのですが、
ワークテーブルを使って削除するか、もしくはフラグを立てて読み飛ばすかということを
したいなと。いずれにしても更新を想定しています。
データベースなので履歴データは基本は削除しない運用が望ましいですね。
ワークテーブルを使うのなら、上記の集計クエリを含むクエリを追加クエリにして追加すればすみます。
フラグフィールドを追加してそれを更新するなら、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でいくかは、得意不得意があると思いますので、好みでいいと思います。
通報 ...