In the MonthsLeft query field, where are you getting those values from? Can't see them in the rest of the query design, nor the table/query datasheet results.
When the query is run, the form is open in form view, with the textbox containing a value?
Edit: forgot to say that these two parts are contradictory
I subtracted today's date from the date of Training:
DaysPassed: [Date()]-[LastOfDOT]
Your calculation is the opposite of your statement. It could be that this is why it works for "2" when you say
I fill in the txtMonths with a number, and it doesn't calculate it right
That statement doesn't help much.
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.