Microsoft Access 掲示板

ADOでレコードが飛ばされてしまう。 / 15

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

やはり、残業管理ID=130で残業区分=3にして、rs.updateで並び替えが行われているということですかね。

いえ、「[残業区分]の値に 3 を代入( 1 から 3 に変更)した瞬間」です。
Update メソッドが呼び出されるより先に並べ替えが行われています。

Debug.Print "【値の代入前】"
Debug.Print "[残業管理ID]の値: " & rs![残業管理ID].Value
Debug.Print "[残業区分]の値: " & rs![残業区分].Value
Debug.Print "レコードセット内の絶対位置: " & rs.AbsolutePosition
rs!残業区分.Value = 3
Debug.Print "【値の代入後】"
Debug.Print "[残業管理ID]の値: " & rs![残業管理ID].Value
Debug.Print "[残業区分]の値: " & rs![残業区分].Value
Debug.Print "レコードセット内の絶対位置: " & rs.AbsolutePosition
rs.Update

(イミディエイトウィンドウへの出力結果)

【値の代入前】
[残業管理ID]の値: 130
[残業区分]の値: 1
レコードセット内の絶対位置: 2
【値の代入後】
[残業管理ID]の値: 130
[残業区分]の値: 3
レコードセット内の絶対位置: 3

以上のように、AbsolutePosition プロパティの値の変化からも今回の現象の原因を説明することができます。

通報 ...
  • 16

    ご解説ありがとうございます。
    値を代入した瞬間にレコード位置が変わっていたのですか。

    Sortプロパティも良く気を付けて使わなければならないですね。
    Sort設定した瞬間だけ並び替えが行われるのものかと。