【问题标题】:Visual Basic - Nested IF in IIF with OrElseVisual Basic - IIF 中的嵌套 IF 与 OrElse
【发布时间】:2020-07-02 16:52:45
【问题描述】:

我在 Visual Basic 中有一个来自我试图修改的 SQL Report Builder 的表达式。我正在快速掌握所有 SQL,因为它对我来说是全新的,而且我仍在学习正确的结构和语法。

我想要做的是修改表达式以从 DonationAmount 获取输出,看看它是否 >= 到 10,如果它是

=Iif(
    Fields!ndpPP.Value = 1,
    "",
    Iif(
        Fields!IsCP.Value = 1,
        "Text 1 " & Iif(
            Fields!IsS.Value OrElse 
            Fields!IsProbation.Value OrElse 
            Fields!UnfilteredRateTypeID.Value = 9  
            OrElse Fields!UnfilteredRateTypeID.Value = 10, 
            "",
            " " & Format(Fields!DonationAmount.Value, "C0") & ""
        ) & " Text 3",
        "Text 2 " & Iif(
            Fields!IsS.Value OrElse 
            Fields!IsProbation.Value OrElse
            Fields!UnfilteredRateTypeID.Value = 9 OrElse
            Fields!UnfilteredRateTypeID.Value = 10,
            "",
            " " & Format(Fields!DonationAmount.Value, "C0") & ""
        ) & " Text 4"
    )
)

【问题讨论】:

  • 您应该将Iifs 更改为If operator。这相当于从“Iif”中删除一个“i”。

标签: sql-server vb.net reportbuilder


【解决方案1】:

这应该可以工作(一旦你将它整合到表达式的其余部分)

Iif(Fields!DonationAmount.Value < 10, 10, Fields!DonationAmount.Value)

【讨论】:

  • 谢谢托马拉克!这里的两个答案都将有助于长期。
  • 你选择Iif而不是If函数有什么原因吗?
  • @AndrewMorton 主要是因为OP在现有代码中一直使用Iif
  • 我们最终选择了报表生成器中的嵌套 IIF 语句。谢谢大家的帮助!
【解决方案2】:

你可以修改输出

Format(Fields!DonationAmount.Value, "C0") 

类似

Format(math.Max(Fields!DonationAmount.Value, 10), "C0") 

这将打印值或 10,以较大者为准

【讨论】:

  • 谢谢乔恩!我认为这将是最简单的长期。
猜你喜欢
  • 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
相关资源
最近更新 更多