明細行の挿入②

Pocket

前回、明細行を追加する前段階まで解説しました。

あとはサブフォームに配置したコマンドボタンを押したときのVBAコードを入力します。

前回も解説した通り、主キーとなっている納品明細IDはオートナンバーなのでこれを使って
並べ替えはできないので、順番というフィールドを作ってその番号を変更して明細行を
挿入していきます。

順番フィールドは長整数型なので、番号は自由に変えらるのでこれを利用します。

28004281
コマンドボタンを押した行に明細行を挿入します。
考え方は、
①最初に明細行を挿入したい順番を「a」という変数に格納します。

②次にその「a」に格納した順番を一つずつ数字を増やして、確保した「a」という
番号を確保します。つまり取得した行数以上のデータの順番に1を足します。

③これで「a」という順番が空きますので、そこに新規にデータを追加する

という流れです。

Private Sub コマンド9_Click()
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!順番 →①

Do Until rs.EOF →②
If rs!納品書NO = Forms!納品書メイン!納品書NO Then
If rs!順番 >= a Then
rs!順番 = rs!順番 + 1
rs.Update
End If
End If
rs.MoveNext
Loop

rs.AddNew →③
rs!順番 = a
rs!納品書NO = Forms!納品書メイン!納品書NO
rs.Update

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

Forms!納品書メイン!納品書サブ.Form.Requery

End Sub

最後にサブフォームのフォームプロパティの並べ替えを「順番」にします。
2804282
これで完成。実行結果です。
2804283

テーブルをみるとデータは古いものから新しいものに追加していくので、
データそのものの順番を変えている訳ではなく、見た目だけかえているだけです。
2804284

サンプルデータです。ご活用下さい。

===================================
今年の11月に東海税理士会で市民フォーラムを愛知県一宮市で開催します。
その運営委員になってしまいました。なったからにはお役を全うしたいと
思います。

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