Microsoft Access 掲示板

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

24 コメント
views
4 フォロー
16

数値が重複する場合があるんですね。
だとすると、前回の私の回答では、うまくいかない場合があるので、ちょっと修正します。

数値が同じ場合、IDの並び順が不定になるので、IDの並び順も指定しておく必要がありました。

Public Sub SequenceCheck3()
    Dim MinId As Long, MaxID As Long
    MinId = DMin("ID", "T1"): MaxID = DMax("ID", "T1")
    
    Dim StepNum As Long, SeqNum As Long, stOrder As String
    If DLookup("数値", "T1", "ID=" & MinId) < DLookup("数値", "T1", "ID=" & MaxID) Then
        StepNum = 1   '昇順
        SeqNum = MinId
        stOrder = "昇順"
    Else
        StepNum = -1  '降順
        SeqNum = MaxID
        stOrder = "降順"
    End If

    CurrentDb.Execute "UPDATE T1 SET 連番チェック = Null WHERE Not 連番チェック Is Null;"
    
    Dim sSQL As String
    sSQL = "SELECT * FROM T1 ORDER BY 数値, ID"
    If stOrder = "降順" Then sSQL = sSQL & " DESC"
    
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset(sSQL)
    Do Until rs.EOF
        If rs!ID <> SeqNum Then
            rs.Edit
            rs!連番チェック = stOrder & "×"
            rs.Update
        End If
        SeqNum = SeqNum + StepNum
        rs.MoveNext
    Loop

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

    数値が重複する場合があるんですね。
    はい、あります。その場合もあると お伝えしなければいけなかったのですね。すみません。

    伝達事項の少ない中で、ご返信本当にありがとうございます。
    上記を参考に作成してみます。また壁に当たるかと思いますが、ご指導お願いいたします

    20

    hatenaさま 参考にさせていただき、今テーブルに入力しているID19から22のチェックができるようになりました。今後チェックするIDが34まで増え、19から22、その途中27から34も一度にチェックしたい時などには、どのように書き換えればよろしいでしょうか?DMin("ID", "T1")やDMax("ID", "T1")を19や34にして複数同じなものを作る以外のスマートの方法をお願いできますか?