多个或在IIF功能中

时间:2017-09-29 14:33:18

标签: reporting-services

鉴于此数据:Complete Dataset

我只想得到那些TransactionYrMonth = ParameterPeriod的Total_AR,所以我用这段代码制作了它:

=IIF(
    IsNothing(Sum(Fields!Total_AR.Value)),0,
    Sum(IIF(Cdate(Fields!TransactionYrMnth.Value)=Cdate(Parameters!Period.Value),
    Fields!Total_AR.Value,0)
           )    
    )

从那里,我得到了这个数据集: Filtered Dataset

现在,我需要做的是获得从1月到3月开始的前3个服务月份的总和,它等于4月份的最新交易月份。

所以总和应该等于$ 204,329 + - $ 96,640 + - $ 259,008 = - $ 151,319

为了使它成为可能,我尝试使用这样的代码:

=Sum(IIF(
      Cdate(Fields!TransactionYrMnth.Value)=Cdate(Parameters!Period.Value) And (
      Cdate(Fields!ServiceYrMnth.Value)=DateAdd(DateInterval.Month, -3, CDate(Parameters!Period.Value)) Or
      Cdate(Fields!ServiceYrMnth.Value)=DateAdd(DateInterval.Month, -2, CDate(Parameters!Period.Value)) Or
      Cdate(Fields!ServiceYrMnth.Value)=DateAdd(DateInterval.Month, -1, CDate(Parameters!Period.Value))), Fields!Total_AR.Value,0
        ))

我没有运气生产它。我甚至有一个错误说

  

'Textbox11.Paragraphs [0] .TextRuns [0]'包含错误:[BC30516]过载分辨率失败,因为无法访问' IIf'接受这个数量的论点。

任何人,请帮忙吗?

1 个答案:

答案 0 :(得分:0)

我已经使用此代码获得了解决方案:

=Sum(IIF(
        Cdate(Fields!TransactionYrMnth.Value)=Cdate(Parameters!Period.Value) And 
        CDate(Fields!ServiceYrMnth.Value) >= DateAdd(DateInterval.Month, -3, CDate(Parameters!Period.Value)) And 
        CDate(Fields!ServiceYrMnth.Value) <= DateAdd(DateInterval.Month, -1, CDate(Parameters!Period.Value)), Fields!Total_AR.Value, 0
        )
    )