2013-06-23 191 views
0

我有两个可编辑的时间/日期字段,TimeInTimeOut,以及一个计算显示领域hoursWorked总和,它的作用是让TimeInTimeOut之间的差异,以小时为单位显示出来:分钟,例如: (02:30)。我决定拥有另一个可编辑的时间/日期字段TimeIn_1TimeOut_1字段,并计算显示字段hoursWorked,并计算显示字段totalHours的另一个字段,该字段显示hoursWorkedhoursWorked_1小时的总和/总和。我试过这个代码:的Lotus Notes:小时

thours:[email protected](hoursWorked=null | hoursWorked_1=null; @Return(""); ""); 
seconds := hoursWorked+hoursWorked_1; 
hours := @Integer(seconds/3600); 
minutes := @Integer(@Modulo(seconds;3600)/60); 
output := @Right("00" + @Text(hours); 2) + ":" + @Right("00" + @Text(minutes); 2); 
@TextToTime(output) 

但没有任何反应。你可以帮我吗?

+2

totalHours字段的类型是什么?你想在第一行代码中做什么?如果你删除它会发生什么? (注意:你知道在Notes公式语言中null不是关键字吗?它作为一个对'null'变量的引用 - 在大多数情况下当然是未初始化的,但理论上可能有一个非空值) –

+0

'totalHours'字段的类型是文本。第一行代码是检查两个字段的值是否为空,并返回值0,因为我有时会得到一个错误,是正确的吗? – drayl

回答

1

我假设你计算你的字段hoursWorkedhoursWorked_1就像在这个公式中显示的一样。如果是这种情况,无论您如何定义表单中的字段,文档中的hoursWorkedhoursWorked_1都来自文档中的“日期/时间”类型。

这就是为什么你的公式应该是这样的:

thours:[email protected](@IsNull(hoursWorked) | @IsNull(hoursWorked_1); @Return(""); ""); 
nullTime := @ToTime("00:00"); 
seconds := (@ToTime(hoursWorked) - nullTime)+ (@ToTime(hoursWorked_1) - nullTime); 
hours := @Integer(seconds/3600); 
minutes := @Integer(@Modulo(seconds;3600)/60); 
output := @Right("00" + @Text(hours); 2) + ":" + @Right("00" + @Text(minutes); 2); 
@TextToTime(output) 

只有前三行是您的公式不同。

+0

我尝试使用您的代码,但仍然没有输出。我不明白为什么。 – drayl

+0

我改变了第三行 - 请再试一次。以“hh:mm”格式显示'hoursWorked'和'hoursWorked_1'? –

+0

是的。它以“hh:mm”格式显示。仍然没有结果。当我减去它们时,它会给出结果。 – drayl

1

我不相信hoursWorked = null的第一个测试是正确的。我认为你需要@IsNull(hoursWorked)。这就是说我会认为结果仍然是错误的,公式会继续。

在没有@TextToTime的情况下查看输出结果可能是值得的。

+0

这可能是正确的,它可能正常工作。空不是关键字,所以它被解释为一个变量(或一个字段)。该变量未被显式初始化,因此它被评估为具有空值。我无法在帮助数据库中找到此空值的明确定义,但对于指定为“”的字段。我认为变量是一样的。 –