IIf 语句在报表生成器中组合 2 个日期字段

IIf statement to combine 2 date fields in report builder

我的数据集中有两个日期字段。它们被标记为 OperativeA 和 OperativeB,并根据工作分配给谁来填充。 用户将只能向其中一个字段添加日期,因此只有 1 个日期字段将被使用,这意味着当我 运行 报告时,未使用的日期字段显示为空白。

我正在尝试编写一个计算字段,以便如果两个日期字段都为空,则它显示为 "unassigned",否则显示它已分配给的操作员。 OperativeA 或 OperativeB.

到目前为止,我已经创建了 2 个计算字段:

=IIF(IsNothing(Fields!OperativeA.Value), "Unassigned", Fields!OperativeA.Value)

=IIF(IsNothing(Fields!OperativeB.Value), "Unassigned", Fields!OperativeB.Value)

这些工作,但我还没有真正取得任何成就,因为我还有 2 个领域!

我正在努力将 2 个组合起来,这样我只有 1 个字段显示 "unassigned" 或其中一个特工。

有没有人有任何建议可以帮助我实现 1 字段?

非常感谢

就我个人而言,如果可能的话,我会在服务器上执行此操作(我假设这里是 SQL 服务器)。它会像

一样简单
SELECT 
    COALESCE(OperativeA, OperativeB, 'Unassigned') AS myCalcField
    , myOtherFields 
    FROM myTable

如果您真的必须在 SSRS 中执行此操作,那么您将需要

=SWITCH (
        Len(Fields!OperativeA.Value) >0 , Fields!OperativeA.Value,
        Len(Fields!OperativeB.Value) >0 , Fields!OperativeB.Value,
        True, "Unassigned"
        )

您可以使用嵌套的 IIF 语句来获得相同的结果,但 SWITCH 通常更清晰易读。 SWITCH 语句在 return 为真的第一个表达式处停止。所以我们检查 A 是否包含任何东西,如果是,我们 return A,如果不检查 B,最后如果所有其他方法都失败,最终表达式 True 显然会 return true 所以最后一个值是returned(最后 expression/value 对充当 'else')。