2011-07-05 59 views
0

我有两个交叉表查询(结构见下面)。很简单。第一个是我们公司在每个城市拥有的每种建筑类型的总数,第二个是在整个城市中按所有类型(不仅是公司所有)建筑物的总数。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 ║ 
╚═══════════════════════════════════════════════════════════════════════════════╝ 

有人能告诉我为什么我“被零除”错误获取,这是否是计算一个合理的策略从两个交叉表查询中的数据百分比(我也考虑过在报告中进行所有百分比计算,但是这看起来更乏味)

+0

您可以使用此http://www.sensefulsolutions.com/2010/10/format-text-as-table.html格式化表格。 – Tomalak

回答

0

我在这里猜测了一下,bu T I以为你在找什么更多的东西是这样的:

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声明。