@Pac-Man ONLY if you follow the BAD advice to corrupt the meaning of your grade field. I gave you one solution that should work with your existing tables. If you are not already storing attendance information by day, you should be. But if you don't understand how to use that solution, just add a new column to your grade table. That suggestion is also BAD advice but it is less bad than corrupting a field by using it for two purposes. Why is my "add a new column" advice bad? It is bad because it duplicates data that belongs elsewhere (in the attendance table) and by duplicating it, you can cause a conflict. What if you mark the student present in the attendance table but mark the new field in the grade table as "A"? Maybe this is logical to you. Maybe if the student was present for part of a day, you want to mark him present for purposes of attendance but maybe he left early and so you want to mark him absent for purposes of the exam? I would not allow that conflict to happen without also adding a notes field to the grade table and forcing it to be populated if you have a conflict between the two tables.
NEVER corrupt the meaning of a field by overloading it with some other piece of information. You are already thinking about how you are going to get around the bad data. The solution is easy. Just don't make the data bad to begin with.
NEVER is certainly a strong word especially when capitalized. But you are in control of the schema and it is up to you to ensure that it is sound. When you use one field to have multiple meanings, you end up where we started this post by constantly having to compensate. Why would you ever want to do that when it is so easy to solve this problem correctly and avoid future problems?
PS, I am only replying because you addressed me directly. Otherwise, the person who gave you the bad advice should give you the solution to the bad advice. And then the solution to the solution to the bad advice. We all occasionally give bad or wrong advice but we don't usually double down on it when someone points it out.
I could write for hours on the proper situational use of null as the default for numeric values. Novices have trouble understanding null and compensating when necessary but this particular situation (exam grades) is one where Null is going to save you trouble rather than causing trouble primarily because of the way Access ignores null values when calculating aggregate values which is exactly what you want to happen. You don't need to write functions to ignore zeros so they don't affect grades because some grades will be zero because that is the grade the student earned.