MS Access - деление на ноль + Nz () - PullRequest
0 голосов
/ 05 июля 2011

У меня есть два перекрестных запроса (структуру см. Ниже). Довольно просто В первом берутся все типы зданий, которыми владеет моя компания в каждом городе, а во втором - все ВСЕ (не только принадлежащие компании) здания по типу во всем городе.

Все, что я хочу сделать, это рассчитать процент, но у меня много проблем. Я думаю, что я довольно близок, но по какой-то причине моя Nz() функция работает неправильно. Я продолжаю получать «Деление на ноль ошибок». Вот моя формула процента:

DCount(
  "[ID]","[Company_owned]") / DCount(
    "[ID]","[City_Totals]", "[Year_built]=2000" & Nz(Year_built, "null")
  )
)

Вот схема запросов кросс-таблицы.

1)

╔═══════════════════════════════════════════════════════════════════════════════╗
║               Building type:          1     2     3     4      5      6     7 ║
╠═══════════════════════════════════════════════════════════════════════════════╣
║     City      Atlanta                 0     7     0     2      3      4     9 ║
║               New York                0     0     2     5      7      8     2 ║
║               San Francisco           1     1     2     3      4      5     6 ║
╚═══════════════════════════════════════════════════════════════════════════════╝

2)

╔═══════════════════════════════════════════════════════════════════════════════╗
║               Building type:          1     2     3     4      5      6     7 ║
╠═══════════════════════════════════════════════════════════════════════════════╣
║     City      Atlanta                 8     9     3     2      3      7     9 ║
║               New York                0     0     2     7      7      9     2 ║
║               San Francisco           3     1     9     3      5      5     8 ║
╚═══════════════════════════════════════════════════════════════════════════════╝

Может кто-нибудь сказать мне, почему я получаю ошибку «Деление на ноль» и является ли это разумной стратегией для вычисления процентов из данных в двух перекрестных запросах (я также рассмотрел возможность выполнения всех вычислений процентов в отчете, но это кажется немного более утомительным)

1 Ответ

0 голосов
/ 05 июля 2011

Я думаю, здесь немного, но я думаю, что вы ищете что-то вроде этого:

DCount("[ID]","[Company_owned]") / _
DCount("[ID]","[City_Totals]", "[Year_built]" & _
  IIf(IsNull(Year_built), " Is Null", "=" & Year_built))

Примечание. Оставьте символы продолжения строки (_) и просто запустите каждую строку вместе, если вы делаете это в запросе.

Я думаю, что причина ваших проблем в том, что второй критерий, который вы написали, оценивал что-то вроде этого: [Year_built]=20002008 или это [Year_built]=2000null.

Даже если оставить 2000 in было просто опечаткой в ​​вашем вопросе, это: [Year_built]=null все равно не будет делать то, что вы, похоже, ожидаете. В этом случае вам нужен оператор Is Null.

...