前回、明細行を追加する前段階まで解説しました。
あとはサブフォームに配置したコマンドボタンを押したときのVBAコードを入力します。
前回も解説した通り、主キーとなっている納品明細IDはオートナンバーなのでこれを使って
並べ替えはできないので、順番というフィールドを作ってその番号を変更して明細行を
挿入していきます。
順番フィールドは長整数型なので、番号は自由に変えらるのでこれを利用します。
コマンドボタンを押した行に明細行を挿入します。
考え方は、
①最初に明細行を挿入したい順番を「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
最後にサブフォームのフォームプロパティの並べ替えを「順番」にします。
これで完成。実行結果です。
テーブルをみるとデータは古いものから新しいものに追加していくので、
データそのものの順番を変えている訳ではなく、見た目だけかえているだけです。
サンプルデータです。ご活用下さい。
===================================
今年の11月に東海税理士会で市民フォーラムを愛知県一宮市で開催します。
その運営委員になってしまいました。なったからにはお役を全うしたいと
思います。
本日も最後までお読み頂きありがとうございます。