軽減税率とそれ以外の売上の表記について①

Pocket

軽減税率への対応②でクエリで消費税を集計し、DLookupで参照する流れを解説
しましたが、この方法は分かりやすいのですが、フォームを開いたときの動作が
遅いという欠点があります。それを解消する方法を解説します。

今回の解説は、
著書 経理業務のための Accessマクロで作るデータベース入門のサンプルデータを元に解説します。

納品書に、
・軽減税率の売上と消費税
・軽減税率適用外の売上と消費税
を集計するフィールドを作ります。
こんな感じです。

次に納品明細に軽減税率の取引かどうか判断するために
「軽減税率」というフィールドを「Yes/No型」で設定します。

消費税を計算するクエリを一部変更します。
消費税率: IIf([納品日]>=#2019/10/01#,IIf([軽減税率]=-1,0.08,0.1),0.08)

ここまで準備ができたらF納品書のフォームを開きます。

ここで売上数量のプロパティのイベントタブの更新後処理に次のVBA
コードを入力します。

Private Sub 売上数量_AfterUpdate()
Me.Refresh
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset

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

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

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

rs.Open “Q納品明細”, cnn, adOpenKeyset, adLockOptimistic
rs1.Open “T納品書”, cnn1, adOpenKeyset, adLockOptimistic

Dim a As Long
a = 0
Dim b As Long
b = 0
Dim c As Long
c = 0
Dim d As Long
d = 0

rs.MoveFirst

Do Until rs.EOF
If rs!納品書NO = Me!納品書NO Then
If rs!軽減税率 = 0 Then
a = a + rs!売上金額
b = b + rs!消費税
End If

If rs!軽減税率 = -1 Then
c = c + rs!売上金額
d = d + rs!消費税
End If
End If
rs.MoveNext

Loop

rs1.Find “納品書NO=” & Me!納品書NO & “”
rs1!対象外売上 = a
rs1!消費税 = b
rs1!軽減売上 = c
rs1!軽減消費税 = d
rs1.Update

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

rs1.Close
Set rs1 = Nothing
cnn1.Close
Set cnn1 = Nothing

End Sub

ADOを使うので、参照設定を忘れずに。

コードの細かい解説は次回。

これで売上数量を更新すると、
売上は、軽減なのか、普通の売上か
消費税は、8%か10%で集計してくれます。

やってみると分かりますが、集計はDLookupを使うよりは早く
違和感は感じません。

================================
ラグビーW杯盛り上がっていますね。どの試合もついつい見てしまいます。
アイルランドに勝った試合が研修で見れなかったことが悔やまれてなりません。

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