2014-03-24 43 views
5

是否有可能以'在線'方式在rdlc報表表達式中創建變量?在rdlc表達式中設置局部變量

例如,我有以下表現:

=IIf(First(Fields!BillingAccount_billtostateprovince.Value, "Invoice") <> "", 
First(Fields!BillingAccount_billtostateprovince.Value, "Invoice") + " ", 
"") 

我想,我估計下面的表達式First(Fields!BillingAccount_billtostateprovince.Value, "Invoice")兩次。我不喜歡它,它看起來很醜陋...我寧願在當前表達式的範圍中創建變量並使用它。

可能嗎?

+1

「我不喜歡它,它看起來醜陋」 - 歡迎SSRS!我不相信有一種方法可以避免這種情況。你可能可以將字段值傳遞給後面的代碼,然後檢索它,但這隻會稍微減少字符數,並會增加一個額外的圖層來擔心。 – user3056839

回答

3

正如user3056839所說,Welcome to SSRS!

無論如何,你想要的是不可能的,因爲你現在正在寫的不是一個腳本,而只是一個表達。這是一個返回值的單個語句,因此您不能聲明變量,使用循環或腳本中的任何內容。

你必須確切地使用你正在寫的東西。

此外,看到像您的IIF表達式並不罕見。我經常看到的是IFF(IS NOT NULL,'N/A')。該領域實際上可能會被評估兩次,但沒有什麼可以做的。這很醜陋,但這是你做到這一點的唯一方法。

想想的情況下子句:

SELECT 
CASE WHEN MyField IS NOT NULL THEN 
    MyField ELSE 0 
END 

你是兩次評估的領域,但沒有什麼可以做:)

0

這是可能做到這一點在SQL Server 2008及以上。您可以創建一個Report Variable,可以通過您的報告進行訪問。

Creating Report variable

參考:sqlchick.com