hiroton
2024/01/10 (水) 15:51:28
429d8@f966d
適当に「2024年3月に400個出庫」のデータを加えたサンプル
hirotonは「簡単な手法」が思い浮かばなかったので覚悟してください
複雑な要件なので問題を分解します
1.「保管」の累計個数をどう計算するか
2.「No」の連番をどう取得するか
3.「存在しない月のデータ」をどう補完するか
回答としては一緒くたにやっていますが、どの問題を解決するためのものなのか考えながら見てください
レポートのレコードソースのクエリ
SELECT
T_入出庫一覧.区分,
[移動日] - Day([移動日]) + 1 AS 移動月,
Sum(IIf(
[区分ID] = 1,
[合計]
)) AS 入庫数,
Sum(IIf(
[区分ID] = 2,
[合計]
)) AS 出庫数,
T_区分マスター.手数料単価,
Sum([手数料単価] * [合計]) AS 手数料
T_区分マスター.区分ID,
FROM
T_入出庫一覧
INNER JOIN
T_区分マスター
ON T_入出庫一覧.区分 = T_区分マスター.区分
GROUP BY
T_入出庫一覧.区分,
[移動日] - Day([移動日]) + 1,
T_区分マスター.手数料単価,
T_区分マスター.区分ID
ORDER BY
[移動日] - Day([移動日]) + 1,
T_区分マスター.区分ID
;
レポートのモジュール
Option Compare Database
Option Explicit
Dim No As Long
Dim 保管月 As Date
Dim 保管個数 As Long
Private Sub Report_Load()
保管月 = DateAdd("M", -1, Me!移動月)
End Sub
Private Sub 移動月フッター_Format(Cancel As Integer, FormatCount As Integer)
No出力 Me!No_保管
'//補完用データ確保
保管月 = Me!移動月
保管個数 = Me!保管個数表示
End Sub
Private Sub 移動月ヘッダー_Format(Cancel As Integer, FormatCount As Integer)
If Me!移動月 = DateAdd("M", 1, 保管月) Then
Cancel = True
Exit Sub
End If
'//前のレコードが2月以上前なのでデータ補完
No出力 Me!No_補完
保管月 = DateAdd("M", 1, 保管月)
Me!移動月補完 = 保管月
Me!保管個数表示補完 = 保管個数
Me.NextRecord = False
End Sub
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
No出力 Me!No_入出庫
End Sub
Private Sub No出力(ctl As TextBox)
No = No + 1
ctl = No
End Sub
通報 ...