Date SSRS检查昨天是否有IIF表达式的条目
我对SSR中的IIF表达式有问题。 我正在写一份报告,看看谁上班迟到,我们有4个班次。 我试图从报告中获得假阳性,例如,某人在他/她的轮班结束后返回,并且他们被自动计算为下一轮班迟到的人 除了夜班,一切都正常IIF因为它在前一晚开始的第一班。 我希望代码检查在指定的时间范围内前一天晚上是否已经有条目(如果有),然后将新的迟到时间显示为0。 所有其他班次都正常工作 所以我得到的是Date SSRS检查昨天是否有IIF表达式的条目,date,reporting-services,expression,reporting,iif,Date,Reporting Services,Expression,Reporting,Iif,我对SSR中的IIF表达式有问题。 我正在写一份报告,看看谁上班迟到,我们有4个班次。 我试图从报告中获得假阳性,例如,某人在他/她的轮班结束后返回,并且他们被自动计算为下一轮班迟到的人 除了夜班,一切都正常IIF因为它在前一晚开始的第一班。 我希望代码检查在指定的时间范围内前一天晚上是否已经有条目(如果有),然后将新的迟到时间显示为0。 所有其他班次都正常工作 所以我得到的是 =CInt(IIF( (Format(Fields!Aeg.Value,"HH")="06") AND (Format
=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")), ...
但它在24小时前检查过。
我怎样才能让它从那天起取最大值
MaxHourdateChecked提供的重载解析失败,因为没有可访问的“Max”接受此数量的参数。rsCompilerErrorInCode错误在这里:CIntFormatFields!Aeg.价值,dd-1
我认为您可以使用一个函数来接受Aeg.Value,验证DateAddDay,-1,Aeg.Value的HH>22是否存在记录,并返回一个布尔值
查看此链接了解如何操作。感谢@tezzo的回复,我认为这是正确的方向。但它似乎无法解决问题。如果我为DateAddDateInterval.Day创建一个新的测试字段,-1,字段!我得到了正确的结果。我试着用hour来打发时间,格式似乎很有效。我尝试格式化dd.HH以验证日期。日期还行。但每当我把这个加入到整个公式中,它就会再次检查今天的情况。还有,折叠和扩展的小报有两种不同的表达方式吗?返回布尔值是什么意思?使用自定义代码?我建议使用自定义函数,因为我认为您的表的另一条记录上有前一天晚上的数据。在这种情况下,如果字段中有日期值!Aeg.值,即2014/09/18您必须检查是否有另一条日期为2014/09/17且HH>22的记录。我尝试过,但现在自定义功能对我来说有点太多。是否有另一种方法将其分类为4个固定时间班次,然后从班次开始时间推导偏差?LoggedTime是查询中的日期时间字段,范围是通过@startDate和@endDate+1之间的WHERE Events.LoggedTime来选择的。报告中这两个参数的默认值都是function=Today@endDate+1,因此它实际上包括所选的@endDate日期。对不起,如果您需要的数据位于不同的记录上,使用Reporting Services,我无法想象除了使用自定义代码之外的其他解决方案。如果您不想使用自定义代码,请尝试在SQL查询中解决它。您好,@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