MS Access - 除以零+ Nz()

时间:2011-07-05 13:02:04

标签: ms-access ms-access-2007

我有两个交叉表查询(请参阅下面的结构)。很简单。第一个采用我公司在每个城市拥有的每种建筑类型的总和,第二种采用整个城市中所有(不仅仅是公司拥有的)建筑物的总数。

我想做的就是计算一个百分比,但我遇到了很多麻烦。我认为我非常接近,但由于某种原因,我的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 :(得分:0)

我在这里猜测一下,但我认为你要找的东西更像是这样:

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语句。