2014-03-24 41 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