【问题标题】:SSRS expression with missing column not working缺少列的 SSRS 表达式不起作用
【发布时间】:2014-11-19 22:43:13
【问题描述】:

我正在尝试创建一个缺少列的表达式。如列中的列不是从查询中返回的,但确实存在于字段列表中。

我遇到的问题是,每次我做一个表达式并且其中一个参数来自一个没有从查询返回的字段时,查询都会静默失败。下面的示例正在查看一个字段“test”,正如我所说,它存在于字段列表中但没有从查询中返回,我怎样才能让这个语句发送“alert”??

=IIF(Fields!test.IsMissing,"alert",Fields!test.Value)

我不返回该字段的原因是列取决于我在过程中输入的参数(因此可以使用或不使用它们取决于用户的要求)

谢谢

【问题讨论】:

    标签: reporting-services expression


    【解决方案1】:

    通过阅读您的问题,我认为您有动态列,这些列将有条件地返回
    所以你应该做的是,

    1) 在参数列表中创建参数并将其设置为内部并将字段值分配给该参数,假设参数为dyanmicfiledvalue

    2) 改变你的表达方式, =IIF(IsNothing(Parameters!dyanmicfiledvalue.value),"alert", Parameters!dyanmicfiledvalue.value )

    应该这样做。如有问题请告诉我。

    或者,如果您想检查该列的空值或空值,只需更改为

    =IIF(IsNothing(Fields!test.value),"alert",Fields!test.value)

    【讨论】:

    • 这是我尝试的第一件事,我会再试一次以确认,我得到了非常奇怪的行为,但似乎有诀窍的是创建一个计算字段并简单地将缺少的参数分配给该计算字段,因此我将拥有直接从查询中接收值的字段测试,然后我将拥有读取测试值的 test_t。这将不返回任何内容: =IIF(Fields!test.Value> 0,"tst","abc") 而这将 =IIF(Fields!test_t.Value> 0,"tst","abc") 您的示例将返回什么都没有。
    • @您可以将NULL 分配给查询中的该字段,并直接使用答案中的第二个表达式进行测试。
    • 如果该字段为空,它将起作用,毫无疑问。但是我正在使用存储过程,我无法更改存储过程本身。我不想为每个存储过程创建一个临时表,因为这会增加我的工作量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多