【发布时间】:2014-09-17 12:04:15
【问题描述】:
我对 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)”
【问题讨论】:
标签: date reporting-services expression reporting iif