I prefer to never allow ZLS in my text fields because of the confusion. Various versions of Access have over the years vacillated on the default. I'm pretty sure that the default setting for AllowZLS in 97 was No but the default setting for A2016 is Yes. So, in the past, ZLS were never allowed to be stored in the table and therefore checking for Null gave you what you want. Today, you probably have ZLS in some columns.
I have complained many times to the MS Access team regarding this. They think it is easier for novices if ZLS is allowed. However, once you get to using queries, SQL treats the two values as different and so you have trouble with queries. My pending request is for this to be made an option at the database level so people can choose their poison.
To get yourself out of this mess. you have two options.
1. Fix the data
2. Fix all the queries AND VBA
Personally, I would fix the data. To do that, you have to go through every table to identify if there are any ZLS lurking. The simplest method is to simply change AllowZLS from Yes to No and save the table. The table won't save if any row contains a ZLS. Then you can stop, fix the data and move on to the next table.
There are two common ways for ZLS to get into your table.
1. You import Fixed Width files created on the main frame. If AllowZLS is ste to Yes, the trailing spaces or "empty" strings are imported as ZLS.
2. A user entering data in a form, changes his mind about a value. Instead of selecting the value and using the delete key, he either backspaces or types over the field with the space key. This results in a ZLS and if AllowZLS is set to Yes, a ZLS gets saved. If the property is defined as No, the field is null.
I prefer to always use Null as the unknown value because that makes for consistency between text and numeric and date fields. And because I know that I always use null as the default (unless I actually have a default I want), I account for the nulls in queries and expressions.
Never allowing nulls results in having to account for specific "unknown" values. For example a date with a default value of 0 is actually Dec 30, 1899 which most people find confusing. But if you don't want to allow a null date, the date has to be something! Many people use bogus future dates or bogus old dates. I prefer null for unknown. For numeric values, sometimes 0 as a default is innocuous. In other cases it is dangerous because 0 is a valid value. Do you want to define a grade as 0? That will wreck a student's GPA if he hasn't taken a specific test yet or if you haven't entered the grade. It's also hard to find unrecorded grades since there is no way to distinguish an earned 0 from a default 0. For money and quantity amounts, using 0 as the default is innocuous but for consistency, I always use null.
Using Null as the default means that you may have to define certain fields as required because you can't have them empty. For example, it makes absolutely no sense at all to have 0 as the default for foreign keys (this is the current state of Access because like ZLS, the PTB have decided to "protect" newbies from the horrors of null by defaulting all numeric values to 0). The default for the FK should ALWAYS be null and the field should ALWAYS be defined as required. If you don't have a FK, you have an orphan.