Accessで作る請求書5~ADOで見積明細のデータを請求明細へ2

Pocket

話が前後してしまいますが、テーブルの設定で大事なフィールドを抜かして
いました。
2607283
請求書NOフィールドが抜けていたので追加します。
これがないと、請求書メインフォームで請求明細フォームをサブフォームとして設定
できません。

あと、見積書メインフォームの請求書にデータを移すコードですが、
まだ見積書→請求書と見積明細→請求明細にデータを移すコードが別々のままなので
これを一度に見積書と見積明細のデータを請求書と請求明細テーブルに移せるようにします。

Private Sub コマンド5_Click()
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset

Dim cnn1 As ADODB.Connection
Dim rs1 As ADODB.Recordset

Dim cnn2 As ADODB.Connection
Dim rs2 As ADODB.Recordset

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

Set cnn1 = CurrentProject.Connection
Set rs1 = New ADODB.Recordset

Set cnn2 = CurrentProject.Connection
Set rs2 = New ADODB.Recordset

rs.Open “請求書”, cnn, adOpenKeyset, adLockOptimistic
rs1.Open “見積明細”, cnn1, adOpenKeyset, adLockOptimistic
rs2.Open “請求明細”, cnn2, adOpenKeyset, adLockOptimistic

rs.AddNew
rs!見積書NO = Me!見積書NO
rs!得意先CD = Me!得意先CD
rs.Update

rs1.MoveFirst
Do Until rs1.EOF
If rs1!見積書NO = Me!見積書NO Then
rs2.AddNew
rs2!見積書NO = rs1!見積書NO
rs2!商品CD = rs1!商品CD
rs2!単位 = rs1!単位
rs2!数量 = rs1!数量
rs2!単価 = rs1!単価
rs2!金額 = rs1!金額
rs2!請求書NO = DMax(“請求書NO”, “請求書”)
rs2.Update
End If
rs1.MoveNext
Loop

rs.Close
Set rs = Nothing

cnn.Close
Set cnn = Nothing

rs1.Close
Set rs1 = Nothing

rs2.Close
Set rs2 = Nothing

cnn1.Close
Set cnn1 = Nothing

cnn2.Close
Set cnn2 = Nothing

End Sub

単純に二つのコードを足すだけですが、太文字部分だけが、今回請求明細テーブルに
請求書NOを追加したことにより追加したコードです。

Accessで作る請求書3~ADOで見積データを請求書へ①

Accessで作る請求書4~ADOで見積明細のデータを請求明細へ

請求書テーブルの請求書NOはオートナンバー型なので、必ず追加されたデータの請求書NOは
最大値となるので、請求書NOの最大値=今回のコードで追加した請求書NOとなります。
(今回のコードでは、請求書NOはオートナンバー型なので、AddNewで請求書データを追加した
段階で勝手に最大値をとるので、敢えて請求書NOを追加するコードは記載しません。)

ADOは若干理解しにくいところがあるかもしれませんが、プロではないので
経理で使うレベルでは、今回のコードが恐らく一番難しいコードだと思うので
これ以上難しいものはないと思って、コードを追ってみて下さい。
何度も言うようですが、習うより慣れろです。

最近は夏祭りに花火大会、一輪車大会とイベントが目白押し。
仕事関係でも土曜日に予定が立て続けに入り、休日は慌ただしく過ぎていきます。
最近は平日の方がのんびりできます(^^;)

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