I probably didn't explain it well enough. I have calculated fields
OK, we didn't know that you were talking about calculated fields, but we did understand what you were saying, so what we said holds true.
It makes sense that it will drop those fields because they are not being used for anything in the query.
Why it does this makes more sense if you understand how Access and the Query Builder works.
Queries are really a form of SQL (or T-SQL) code. If you change your Query view to "SQL View", you can see the SQL code that it is building.
So the Query Builder is just a GUI interface that helps you to build the SQL code (if you are not a technical SQL writer and don't want to write the SQL code directly).
The following shows the structure of SQL Queries:
http://www.mycms.ca/index.cfm/page/sqlqueries.html
The SELECT clause is all the fields that you want to show in the query. So anything marked "Show" will be put in this clause.
The FROM clause are the Tables/Queries that are used as data sources for the Query (the objects you add to it).
There could be a related JOIN clause, which is the established relationship between the Query objects (the joining lines in the Query Builder).
The WHERE clause is the Criteria. So anything place on the Criteria lines will go here.
The ORDER BY clause is how the query is sorted. So anything mark as "Sort" in the Query Builder will go here.
So, if you have any field (regardless of whether or not it is a Table field or Calculated field), in which Show is unchecked, Sort is empty, and Criteria is empty, it is not placed in any of the clauses of the SQL statement, and will therefore be dropped. So it makes sense why it is doing that.
I guess that leads to the question, if you are not using it for anything in the query, then why is it there in the first place? It doesn't appear to be needed for anything.