Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date SSRS检查昨天是否有IIF表达式的条目_Date_Reporting Services_Expression_Reporting_Iif - Fatal编程技术网

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

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

我对SSR中的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")), ...
但它在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