I had a trial run of your problem with some sample data that I had. The image of the Report Design and Report Preview are attached.
I have created a new column SrtDt in the Report Query besides the data fields from Table5. The SQL is given below(some of the fields in the table may not be relevant to you):
Code:
SELECT Table5.*, Format([CaseDate],"mm") AS SortDt
FROM Table5
ORDER BY Format([CaseDate],"mm");
You may take the CaseDate as Postage Date and only month is extracted from it for grouping the Report on.
The above Query is used as Report Source and designed the Report with two Unbound text boxes (See the attached image).
The top Unbound Textbox name is OB (stands for Opening Balance) and the second one on the Details Section is named as BAL (for Balance).
The Report Header/Footer Sections must be visible. There are two VBA Sub-Routines with few lines of code to run. You may copy the following VBA Code in the Report Module and save the Report:
Code:
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
[BAL] = [OB] - [Postage]
[OB] = [BAL]
End Sub
Private Sub ReportHeader_Format(Cancel As Integer, FormatCount As Integer)
[OB] = 10000
End Sub
The initial Billed Amount 10000 is set here as constant. You may save this value into a temporary Table and load into the Program with a Dlookup() Function like:
Code:
[OB]=Dlookup("Billed","ParamTable")
The User can update this table when Billed Value changes.