2012-12-18 47 views
3

結合領域,部分空,在文本框上的報告我試圖合併幾個地址精密組件到一個文本框上的報告:在訪問

=[City]+", "+[County]+", "+[Post Code] 

然而並非所有的記錄都在一個條目[縣]欄,這意味着這些記錄沒有任何內容顯示在文本框中。所以,我想一個IIF語句:

=IIf([County],[City]+", "+[County]+", "+[Post Code],[City]+", "+[Post Code]) 

這沒有工作,我怎樣才能使文本框中顯示的任何字段存在?

+0

你想顯示「城市縣郵政編碼」。所以如果國家是空的,是不是文本框顯示「城市和PostCode」? – bonCodigo

+0

如果[縣]爲空,但[城市]和[郵政編碼]不是,則文本框爲空。 – Alex

+1

+1用於觸發HansUp優秀答案 –

回答

3

你太親近了!

=[City]+", "+[County]+", "+[Post Code] 

應該是:

=[City]&", "&[County]&", "&[Post Code] 

請記住,一個NULL數學勝過一切,所以使用加運算符,每次的任何領域是空白的給你一個NULL結果。

+1

+1但我傾向於擺脫雙逗號。 – Fionnuala

1

您已接近您的IIf聲明。

你缺少的兩個可能的測試

如果只有空白可出現一個,

=IIf(IsNull([County]),[City]+", "+[County]+", "+[Post Code],[City]+", "+[Post Code]) 

,如果它可以爲空("")或空

=IIf(len(""&[County]),[City]+", "+[County]+", "+[Post Code],[City]+", "+[Post Code]) 
6

最簡單的辦法IMO:使用Nz

=[City]+", "+Nz([County]+", ")+[Post Code] 

雖然你可能想OT使用&代替+。在Access中+表示求和,但&表示串聯。

+0

Nz()':) +1這是一個...... – bonCodigo

+0

+1但是我仍然不會使用+作爲VBA中的連接符,除非我有一些特殊的內容,換句話說,只針對Nz。 VBA字符串連接符是&。 – Fionnuala

+0

@Remou,如果你需要除null之外的默認響應,你只需要Nz的另一個參數。在大多數情況下(個人),在處理字符串值時,我希望缺省值特別指出',「」'是完全不必要的。 –

0

請嘗試這個:相當超級醜陋的想法...當Chr(13)和Chr(10)在那裏它永遠不會是空的。

IIf(Isnull([County]), 
    IIf(Isnull([Post Code]), 
     IIf(IsNull[Post Code]), "No Address", [Post Code]), 
     [City] + Chr(13) & Chr(10) +[Post Code]), 
[Country] + Chr(13) & Chr(10) + [City] + Chr(13) & Chr(10) +[Post Code]) 
1

你可以利用這一事實,這兩個連接操作(+&)處理空值不同的優勢。

? "A" + Null 
Null 
? "A" & Null 
A 

所以,你可以做到這一點...

? "A" & ", " & "B" & ", " & "C" 
A, B, C 
? "A" & ", " & Null & ", " & "C" 
A, , C 

...但如果你不想兩個逗號,當你有空的,而不是第二個字符串值,而是執行此操作:

? "A" & (", " + Null) & ", " & "C" 
A, C 

如果這一切是有道理的,採用同樣的模式,以文本框控件來源:

=[City] & (", " + [County]) & ", " & [Post Code] 

您不需要功能(IIf,IsNull,Len和/或Nz)即可獲得您想要的功能。

+0

令人驚歎!知道這一招會救了我相當一些代碼! –