Access 2007 - Left Join a una consulta devuelve #Error en lugar de Null

Similar a esta pregunta, pero su problema con la consulta nunca se resolvió completamente:

# Error que se muestra en varias consultas LEFT JOIN Consulta de acceso cuando el valor debe ser NULL

Aparece #Error cuando espero ver un Null cuando hago una combinación a la izquierda donde no hay un registro correspondiente en el lado derecho de la combinación:

Chain               CasesPerMonthPerStore   MonthOfFirstOrder
Naturally           2.3                     5/1/2011
Tom's Market        #Error
Livingstons         #Error
EverClear           3.1                     7/1/2012
Bob's Market        2.66                    5/1/2012
Andy's Exports      #Error
Jamestowns          0.89                    7/1/2012

Funciona bien si copio los datos en una tabla y me voy a unir a esta tabla, así que asumo que hay algo incorrecto en la sintaxis de la consulta:

SELECT 
    MonthRange.Chain,
    MonthRange.CasesShipped/IIf(MonthsSinceFirstOrder.Months>DateDiff("m",QueryDates.StartDate,QueryDates.EndDate)+1,
                                DateDiff("m",QueryDates.StartDate,QueryDates.EndDate)+1,
                                MonthsSinceFirstOrder.Months)/NumStores.NumberOfStores AS CasesPerMonthPerStore,
    MonthsSinceFirstOrder.MonthOfFirstOrder
FROM 
    QueryDates, 
    (
        MonthRange 
        INNER JOIN 
        NumStores 
            ON MonthRange.Chain=NumStores.Chain
    ) 
    INNER JOIN 
    MonthsSinceFirstOrder 
        ON MonthRange.Chain=MonthsSinceFirstOrder.Chain;

Este SQL devuelve los resultados correctos, es solo su comportamiento cuando se une a ella lo que está devolviendo #Errors.

nb la extraña declaración Iif en el medio verifica si el número de meses desde la primera orden es mayor que el número de meses incluidos en el rango de fechas especificado, por lo tanto, si el rango de fechas es de 6 meses y la primera orden fue de 9 meses antes la fecha de finalización, utiliza 6; si el primer pedido fue solo 4 meses antes de la fecha de finalización, usa 4.

- ACTUALIZAR EDITAR -

A la derecha, tomé los elementos de la consulta uno por uno, y esto es lo más sencillo que puedo obtener al mismo tiempo que recrea el error de unión a la izquierda:

SELECT 
    MonthRange.Chain, 
    DateDiff("m",QueryDates.StartDate,QueryDates.EndDate)+1 AS CasesPerMonthPerStore
FROM 
    QueryDates, 
    MonthRange;

Y así es como me voy uniendo a ello:

SELECT 
    Chains.Chain, 
    ErrorQuery.CasesPerMonthPerStore
FROM 
    Chains 
    LEFT JOIN 
    ErrorQuery 
        ON Chains.Chain=ErrorQuery.Chain;

¿Alguna cosa en este SQL se ve mal?

Respuestas a la pregunta(3)

Su respuesta a la pregunta