レコードを削除すると、当然順番は変わりません。
そして削除してレコードを追加すると、順番が重なります。
上の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をします。
これは削除した場合です。
======================================
仕事、仕事以外でもバタバタしてしまい、更新が随分おろそかになってしまいました。
これからは定期的に更新していこうと思います。
本日も最後までお読みいただきありがとうございます。