【问题标题】:Set local variable in rdlc expression在 rdlc 表达式中设置局部变量
【发布时间】:2014-03-24 14:25:57
【问题描述】:

是否有可能以某种方式以“在线”方式在rdlc 报告表达式中创建变量?

例如,我有以下表达式:

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

我想我正在评估以下表达式First(Fields!BillingAccount_billtostateprovince.Value, "Invoice") 两次。我不喜欢它,它看起来很丑......我更愿意在当前表达式的范围内创建变量并使用它。

有可能吗?

【问题讨论】:

  • “我不喜欢它,它看起来很丑” - 欢迎来到 SSRS!我不相信有办法避免这种情况。您可能可以将字段值传递给后面的代码,然后检索它,但这只会稍微减少您的字符数,并增加一个额外的层来担心。

标签: sql-server reporting-services


【解决方案1】:

正如 user3056839 所说,欢迎来到 SSRS!

无论如何,你想要的都是不可能的,因为你现在写的不是脚本,它只是一个表达。它是返回值的单个语句,因此您不能声明变量、使用循环或脚本中的任何内容。

你必须准确地使用你正在写的东西。

此外,像您这样的 IIF 表达式并不罕见。我经常看到的是 IFF(IS NOT NULL, , 'N/A')。该字段实际上可能会被评估两次,但您无能为力。这很丑陋,但这是你能做到这一点的唯一方法。

想想 CASE WHEN 子句:

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

您正在对该字段进行两次评估,但您无能为力:)

【讨论】:

    【解决方案2】:

    可以在 SQL Server 2008 及更高版本中执行此操作。您可以创建一个Report Variable,可以通过您的报告访问它。

    参考:sqlchick.com

    【讨论】:

      猜你喜欢
      • 2013-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多