访问报告-汇总变量



我有一份报告,给了我所有的休假期。我有一个查找表单,我选择支付期的开始日期和结束日期。它按员工姓名提取在该工资期内休假的所有记录,然后计算该期间的总休假时间。例如,一名员工从2015年8月9日到2015年10月2日休假,总共休假152小时。在2015年9月27日至2015年10月10日的工资期间,他们休息40小时。我通过在报告上创建多个隐藏文本框来计算,然后将最后的计算结果显示为休假小时数。作品精美!下面是我创建的文本框:

'get hours off if begin time and end time off are entered.
vHoursOff = =IIf([BeginTime]="",0,[hoursoff])
'get days off in time period
vDaysOff = IIf([vbd1] = [ved1], 1, Workdays([vbd1], [ved1]))
vDaysOff2 = IIf(IsNull([BeginTimeOff]), [vDaysOff], 0)
'add hours off and days off to get total hours off
vtothoursoff = ([vDaysOff2] * 8) ' + [vHoursOff]
TimeOffThisPeriod = =Format(IIf([Hours]>0,[Hours],"-" & [vtothoursoff]),"Standard")

我的问题是——我想按休假类型(病假、休假、事假、补偿)计算出那个带薪期的总休假时间。我试过了:

=Sum(IIf([tblCodesWork]![Description]="Vacation Time",[TimeOffThisPeriod],0))

会弹出一个框让我输入TimeOffThisPeriod。它不是从我对每条记录的计算中取的。

解释一下我想要什么:员工的工资期为9/27/15至10/10/15:

  1. 假期2015年8月9日至2015年10月2日-本工资期2015年9月27日至2015年10月2日-或40小时假期
  2. 假期10/10/15 -此时间段为10/10/15或8小时假期

在Employee页脚中,我希望它显示此工资期的总共48小时假期。

请帮忙!提前感谢!

您正在对[TimeOffThisPeriod]求和,但该字段已格式化。格式化总是意味着以某种方式将值转换为字符串。这个字段是否总是包含一个可以转换回数字的值?

试试这个:

=Sum(IIf([tblCodesWork]![Description]="Vacation Time",
         IIf(IsNumeric([TimeOffThisPeriod]),CDbl([TimeOffThisPeriod]),0), 0))

如果它仍然不工作,您可能必须创建一个安全的CDbl函数,如果字符串不是数字,它不会抛出错误,因为Iff总是计算两种情况。即,即使IsNumeric([TimeOffThisPeriod])False,也将评估CDbl([TimeOffThisPeriod])

Public Function SafeCDbl(ByVal x As Variant) As Double
    If IsNumeric(x) Then
        SafeCDbl = CDbl(x)
    Else
        SafeCDbl = 0
    End If
End Function

然后将求和表达式改为:

=Sum(IIf([tblCodesWork]![Description]="Vacation Time", SafeCDbl([TimeOffThisPeriod]), 0))

相关内容

  • 没有找到相关文章

最新更新