Accessで給与計算37~賞与計算結果の保存

Pocket

賞与計算が終わったら、給与計算と同じように計算結果を別のテーブル
に保存し、賞与計算の計算結果が変わらないようにします。
(クエリのままでは、社会保険料率等の変更で計算結果が変わってしまうため)

最初に賞与計算クエリに賞与明細IDのIDをフィールドに追加します。
2703091

賞与計算フォームにコマンドボタンを配置して、次のVBAコードを入力します。

Private Sub コマンド21_Click()
Forms(“賞与計算”).Requery

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 “賞与明細”, cnn, adOpenKeyset, adLockOptimistic
rs1.Open “賞与明細控え”, cnn1, adOpenKeyset, adLockOptimistic

Do Until rs.EOF
If rs!支給日 = Forms!賞与計算スタート!テキスト0 Then
rs1.AddNew
rs1!社員CD = rs!社員CD
rs1!支給日 = Forms!賞与計算スタート!テキスト0
rs1!支給額 = DLookup(“支給額”, “賞与計算”, “ID=” & rs!ID & “”)
rs1!健康保険料 = DLookup(“健保保険料”, “賞与計算”, “ID=” & rs!ID & “”)
rs1!厚生年金保険料 = DLookup(“厚生年金保険料”, “賞与計算”, “ID=” & rs!ID & “”)
rs1!雇用保険料 = DLookup(“雇用保険料”, “賞与計算”, “ID=” & rs!ID & “”)
rs1!源泉所得税 = DLookup(“源泉所得税”, “賞与計算”, “ID=” & rs!ID & “”)
rs1.Update
End If
rs.MoveNext
Loop

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

rs1.Close
Set rs1 = Nothing
cnn1.Close
Set cnn1 = Nothing
DoCmd.Close
End Sub

実行結果です。
2703092
これで賞与計算クエリの計算結果を賞与計算控えテーブルに保存することができました。
考え方は給与計算のときと同じです。
念のため、コードの最初に賞与計算クエリを更新し、
データを移した後は賞与計算フォームを閉じるコードも追加しました。
Accessで給与計算20~給与計算結果を保存する
Accessで給与計算21~給与計算結果を保存するADOのコード
Accessで給与計算22~給与計算結果を保存するADOのコード②

=================================
なんとか今週中に、確定申告だけでなく1月決算3件も終わらせてしまおうと
頑張っています。去年は何から何まで自分でこなしたけど、今年は一人増員
した分仕事もはかどり、大変助かっています。

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