SSRS检查昨天是否有IIF表达的条目

时间:2014-09-17 12:04:15

标签: date reporting-services expression reporting iif

我在SSRS中遇到IIF表达式问题。 我正在创建一份报告,看看谁迟到了,我们有4个班次。 我试图从报告中得到误报(例如,有人在他/她的班次结束后又回来了,并且他们自动被视为下一班的迟到者)

一切都有效,除了夜班(IIF在第一班内),从前一晚开始。 我希望代码检查在指定时间范围内是否已经存在前一晚的条目(如果有),而不是将新的“延迟”时间显示为0。 所有其他转变都是有效的。

所以我拥有的是

=CInt(IIF(
(Format(Fields!Aeg.Value,"HH")="06")
AND (Format(Fields!Aeg.Value,"mm")>"00")
AND (Fields!UksID.Value=14),IIF(CInt((Format(Fields!Aeg.Value, "dd"))-1)
AND(Format(Fields!Aeg.Value, "HH")>="22"),"0",(Format(Fields!Aeg.Value,"mm")))
,(IIF((Format(Fields!Aeg.Value,"HH")="08")
AND (Format(Fields!Aeg.Value,"mm")>"00")
AND (Fields!UksID.Value=14),IIF(Min(Format(Fields!Aeg.Value,"HH")<="8"),"0", 
(Format(Fields!Aeg.Value,"mm")), ...

...等

其中“Aeg”是记录时间的数据库字段 和“UksID”是门的过滤器

帮助表示感谢。

我根据你的建议做了一些编辑@tezzo, 我添加了

Public Function CheckDate(ByVal dateFromField As DateTime) As Boolean

Dim dateChecked As DateTime
dateChecked = DateAdd("d", -1, dateFromField)

Dim hourCheck As Integer
hourCheck = Hour(dateChecked)       

If hourCheck >= 22 Then 
Return True
   Else 
Return False
   End If

End Function 

但它正在24小时前检查。 如何从当天获取最大值 Max(Hour(dateChecked))给出“重载解析失败,因为没有可访问的'Max'接受此数量的参数。(rsCompilerErrorInCode)”

1 个答案:

答案 0 :(得分:0)

错误在于:CInt((Format(Fields!Aeg.Value, "dd")) - 1)

我认为您可以使用接受Aeg.Value的功能,验证DateAdd(Day, -1, Aeg.Value)HH > 22是否存在记录并返回Boolean

点击此链接,了解如何add code to a report