I don’t see any code that actually creates a recordset. I think you could use simple DSum() or DCount(). Warnings could be simple Conditional Formatting.
Add the data to the record source of your main report. Let's say your main report is the employee table and the subreports are based on Employee Hours and Employee Payroll. Create to totals queries of Employee Hours and Employee Payroll that group by employee. Add these two queries to your main...
I doubt I have an answer but do have questions. Are these action queries? Do they need to allow edits? Can they be pass-through queries?
Why are you opening queries? Is this part of your user interface?
I would attempt to move as much work as possible to the server.
If you already have the number you are looking for in another query, why not add that query to your report's record source? Join on the appropriate fields so you don't end up with more records than the original record source.
I would create a totals query that counts the drawings you want counted by the engineer field. Then, add this query to your report’s recordsource, joining on the engineer fields. This will expose the count field in your report’s fields.
Certifications and expiration dates should be stored in a separate table with the AFD_ID (assume this is your primary key in your personnel table). Each certification for each person creates a new record. Your current structure doesn’t allow for easy addition of new certifications. You would be...
While you are fixing your form, you might want to research “data normalization”. You are store data in your field names. A friend suggests you are “committing spreadsheet”.
I believe you need to study "normalization". There are many posts in this site as well as resources on the web. Your "problem" will never end if you continue with your current structure with "Ever employee has a field". Data is supposed to be stored in fields rather than used as field names...