我有以下代码
=IIf(Fields!Freeze.Value, Fields!effectivedate.Value, IIF(Month(Fields!effectivedate.Value) <> Month(Now()), Format(Now(), “MM/dd/yyyy”) , Fields!effectivedate.Value))
一个。在第一个IIF语句中,我检查Fields!Freeze.Value是否为true,如果为true,则显示Fields!effectivedate.Value(IIf(Fields!Freeze.Value,Fields!effectivedate.Value)
B中。在第二个IIF statemenet中,我检查Fields!effectivedate.Value是否是当前月份,如果它是当前月份,则显示Fields!effectivedate.Value,如果它不是当前月份,则显示当前日期。
我想在以下方面提供帮助。
在第一个IIF声明中,&gt;&gt;&gt; IIf(Fields!Freeze.Value, Fields!effectivedate.Value,
我想评估一个新值Fields!FreezeDate.value
示例1
Fields!FreezeDate.value = '12/30/2012'
Fields!effectivedate.Value = '11/15/2010'
then Display the Fields!FreezeDate.value
示例2
Fields!FreezeDate.value = '12/30/2012'
Fields!effectivedate.Value = '12/15/2010'
then Display the Fields!effectivedate.Value
我如何用SSRS代码写这个?
如果我没有正确解释,请询问进一步的说明。
答案 0 :(得分:2)
根据我的理解要求,你需要添加另一个IIf()部分来检查两个日期之间的天数差异,然后如果差异是&lt;则显示effectiveDate。 30天:
=IIf
(
Fields!Freeze.Value
, IIF
(
DateDiff(DateInterval.Day, Fields!effectiveDate.Value, Fields!FreezeDate.Value) < 30
, Fields!effectiveDate.Value
, Fields!FreezeDate.Value
)
, IIF
(
Month(Fields!effectivedate.Value) <> Month(Now())
, Format(Now(), “MM/dd/yyyy”)
, Fields!effectivedate.Value
)
)
答案 1 :(得分:0)
我怀疑你缺少的是DATEDIFF
函数的知识。
http://msdn.microsoft.com/en-us/library/aa337092%28v=sql.90%29.aspx
IIF(
DATEDIFF(DAY, Fields!FreezeDate.Value, Fields!effectiveDate.Value) => 30,
Fields!FreezeDate.Value,
Fields!effectiveDate.Value )
上面,我们正在使用DATEDIFF
。
第一个参数是我们要测量的时间测量之间的差异。 DAY。
实施例: -
DATEDIFF(DAY, '2013-01-01', '2013-01-15')
应该会产生14。
全部绑定,我们正在计算FreezeDate
和effectiveDate
之间的日差。当该值超过30时,显示effectiveDate
。否则,请显示FreezeDate
。
您可能需要四处玩才能获得所需的结果。你对逻辑的英文描述不是很好。在这种情况下,我能做到最好。