I get this error when trying to perform a 1) a compare in an IIF statement between a numeric and non-numeric field, 2) a calculation using a non-numeric field and 3) a selection based on dates. The offending field, which Access looks at as non-numeric (or "non-date"

, always comes from another query.
Possibility 1
--------------
It's actually supposed a numeric field and isn't
To fix this, set the property of the offending field to a numeric data type in the query that creates/outputs it.
To find it, run your select queries individually and look for fields that should be numeric which are left justifield in the display.
Possibility 2
-------------
the query that is "too complex" has a compare or calculation using dates
To fix, set the property of all date fields output in queries and used later for calculations or compares to a valid date datatype. If it won't let you set the property to a date, formatting the field as a date usually works. Don't be fooled by the display of the date field when you run individually the select query that creates it .. it can look like a date but not be recognized as a date in subsequent queries.
Possibility 3
-------------
a legitimate non-numeric field (which happens to have a digit in it) that you don't have enclosed in quotes in an IIF statement or select criteria. Example, RecordType is a one-position text field and you have a query with "IIF(RecordType=1,..." Make that "IIF(RecordType="1",..." and it won't be too complex.