As Maciej has suggested, you are going to get far better answers if you provide a clear description of the problem, some sample data and some expected results for the data provided.
First point, totals are not the sort of thing you should store. You have to go to the trouble of maintaining that data item for
every change on the table. For small systems like this it is easier to just calculate the totals as and when you need them (For the purists, yes there are exceptions to that "rule" but you are a long way off rolling stock totals and the like). If you set yourself a standard query up you can join to that query for the totals in any of your other reports. E.g. I set up a query that returns all of the counts by District, by gender and overall like this: Query "DistrictTotals"
SELECT Schools.District, Schools.SchoolType, Count(*) As Total
FROM Schools
GROUP BY Schools.District, Schools.SchoolType
UNION
Select Schools.District, "All",Count(*)
FROM Schools
GROUP BY Schools.District
UNION
Select "All", Schools.SchoolType, Count(*)
FROM Schools
GROUP BY Schools.SchoolType
UNION Select "All", "All", Count(*)
FROM Schools
ORDER BY 1, 2;
which in my case returned these results
District SchoolType Total
1 All 3
1 Female 1
1 Male 2
2 All 4
2 Female 3
2 Male 1
3 All 4
3 Male 4
All All 11
All Female 4
All Male 7
If I want to show information about the districts say I can then join to that query like this
SELECT Districts.*, DistrictTotals.SchoolType, DistrictTotals.Total
FROM Districts INNER JOIN DistrictTotals ON CStr(Districts.ID) = DistrictTotals.District;
I've had to convert the ID to a string because I included "All" in my totals.