Microsoft Access 掲示板

IDが連番に並んでいるのか知りたい / 8

24 コメント
views
4 フォロー
8
hatena 2024/02/10 (土) 10:00:48 修正

下記のような仕様だと仮定して。

  • 数値を昇順にした場合、ID全体が昇順または降順で連番になっているかどうかをチェック。
  • 途中から昇順、降順が変わることはない。
  • 必ずIDは連番になっていて抜けがない。
  • 連番になっていないIDはイミディエイトウィンドウに出力。
  • テーブル名は T1
Public Sub SequenceCheck()
    Dim MinId As Long, MaxID As Long
    MinId = DMin("ID", "T1"): MaxID = DMax("ID", "T1")
    
    Dim StepNum As Long, SeqNum As Long
    If DLookup("数値", "T1", "ID=" & MinId) < DLookup("数値", "T1", "ID=" & MaxID) Then
        StepNum = 1   '昇順
        SeqNum = MinId
    Else
        StepNum = -1  '降順
        SeqNum = MaxID
    End If

    
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM T1 ORDER BY 数値;")
    Do Until rs.EOF
        If rs!ID <> SeqNum Then
            Debug.Print rs!ID
        End If
        SeqNum = SeqNum + StepNum
        rs.MoveNext
    Loop

    rs.Close
    Set rs = Nothing
End Sub
通報 ...