2011-07-05 94 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聲明。