レコードを削除したときに、順番を正しく維持する

Pocket

レコードを削除すると、当然順番は変わりません。

そして削除してレコードを追加すると、順番が重なります。

上の4は、削除する前にあったレコードです。
下の4は、削除後追加したレコードです。

こんな形でExcelだったら、自分で直したり、簡単に手直しで来てしまうのですが
Accessでは一工夫必要です。

ここで使うのがADOで、ADOを使ってレコードを操作します。
Accessファイルで初めてADOを使うときは、VisalBasicのエディター画面で、
ツールの参照設定をクリックします。

ここで
Microsoft ActiveX Data Objects 6.1
にチェックを入れてください。

納品明細フォームのレコードの削除時のイベントプロシージャに次のVBAコードを入力します。
Private Sub Form_Delete(Cancel As Integer)
Dim a As Integer

Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset

Set cnn = CurrentProject.Connection
Set rs = New ADODB.Recordset

rs.Open “納品明細”, cnn, adOpenKeyset, adLockOptimistic

a = Me!順番1

rs.MoveFirst

Do Until rs.EOF

If rs!納品書NO = Forms!納品書!納品書NO Then

If rs!順番1 > a Then
rs!順番1 = rs!順番1 – 1
rs!順番2 = rs!順番2 – 1
rs.Update
End If
End If

rs.MoveNext
Loop

rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing

Forms!納品書.納品明細.Requery
End Sub

これでレコードセレクタから削除をすると、削除しても順番が正しく維持される
ようになります。

考え方としては、削除するデータの順番を変数に記憶させ、
それよりも大きい順番のレコードの順番をマイナス1をします。

これは削除した場合です。

======================================
仕事、仕事以外でもバタバタしてしまい、更新が随分おろそかになってしまいました。
これからは定期的に更新していこうと思います。

本日も最後までお読みいただきありがとうございます。