0

我創建低於lookupset:SSRS - 查找設置爲忽略 「」 值

= RTRIM(LTRIM(加入(LookupSet(場Fund_Family.Value &場Portfolio_Company_Name.Value,菲爾茲Fund_Family.Value!! & Fields!Portfolio_Company_Name.Value,Fields!Security_Type.Value,「DataSet1」),「/」).Remove(1,1)))

這似乎工作。但是,在某些特定情況下,我有兩行,一行沒有值(「」)或安全列。但是,通過這樣做,結果看起來像/ Security1。但是,它應該是Security1.還有一些情況,它會提取安全性1//安全性2.它應該忽略「」值。

如何添加此表達式。我知道ISNothing有一個表達式,但可以在這裏添加嗎?

回答

1

解決它在SQL

如果這是我的項目,我寧願在產生數據的SQL查詢解決這個問題。由於我看不到您的SQL查詢,並且在某些情況下您可能無法更改查詢,所以我提供了我的hacky後SQL解決方案。

哈克解決方案

爲簡單起見,我將使用DATA_SET_STRING來表示你的代碼:RTRIM(LTRIM(Join(LookupSet(Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,Fields!Fund_Family.Value & Fields!Portfolio_Company_Name.Value,Fields!Security_Type.Value, "DataSet1")

像這樣的東西會從列表中刪除空字符串名稱:=REPLACE(DATA_SET_STRING,"/"), "/ /", "/").Remove(1,1)))

空字符串&空白空格

如果你想刪除空白字符(「」)以及空字符串(「」),那麼我會首先將空格字符轉換爲空字符串,然後刪除空字符串。嵌套0​​語句可以做到這一點:在連續

的最大限制這種(比是無法逾越的困難閱讀和維護等)

=REPLACE(REPLACE(DATA_SET_STRING,"/"), " ", " "), "/ /", "/").Remove(1,1))) 

多個空白的是,它只會刪除數量有限連續的空白名稱。例如,如果連續有三個空白名稱,則原始函數DATA_SET_STRING將返回「名稱1////名稱2」。我的其他REPLACE函數將導致最後一串「名稱1//名稱2」。爲了處理連續的多個空格,您必須嵌套更多REPLACE函數。

事情是這樣的:

=REPLACE(REPLACE(REPLACE(DATA_SET_STRING,"/"), " ", " "), "/ /", "/"), "/ /", "/").Remove(1,1))) 

雖然可以解決特定情況與此REPLACE方法,它永遠是弱勢羣體更多的空格連續超過您的預期。

警告

同樣,我寧願通過提供過濾掉空,空字符串名稱查詢解決這個問題。不過,如果你打算使用一個哈克方法(我知道哈克代碼可以讓你擺脫困境的),這裏所提供的解決方案的弱點:

  • 難以閱讀
  • 難以維持
  • 容易受到數據的變化(連續太多空字符串)

記住負責任地編碼。