MS Access - деление на ноль + Nz()

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

Все, что я хочу сделать, это вычислить процент, но у меня много проблем. Я думаю, что я довольно близок, но по какой-то причине моя функция 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 ║
╚═══════════════════════════════════════════════════════════════════════════════╝

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


person jerry    schedule 05.07.2011    source источник
comment
Вы можете использовать этот sensefulsolutions.com/2010/10/format- text-as-table.html для форматирования таблиц.   -  person Tomalak    schedule 05.07.2011


Ответы (1)


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

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 в вашем вопросе было просто опечаткой, это: [Year_built]=null все равно не сделает то, что вы, кажется, ожидаете. В этом случае вам нужен оператор Is Null.

person mwolfe02    schedule 05.07.2011