我的公式有什么问题?只想显示正确的剩余天数

What's wrong with my formula? Just want to show the correct days left

我正在尝试确定我的公式有什么问题。只想显示正确的剩余天数。

Exp. Date = RSPOExpDate

使用 Domino Designer 8。

temp := ((RSPOExpDate - @Today)/60)/60;
tempdays := @TextToNumber(temp)/24;
days := @Left(@Text(tempdays); ".");
@If(days = @Text(days));

Screenshot

不要在您的视图选择公式或列公式中包含任何提供当前时间或日期的函数,例如 @Now@Today 出于性能原因。这些函数会导致视图在每次调用时刷新。

如果您想继续使用它,请将您的公式更改为

@Integer((RSPOExpDate - @Today)/60/60/24)

如果 RSPOExpDate 可以为空,请使用此

@If(RSPOExpDate = ""; ""; @Integer((RSPOExpDate - @Today)/60/60/24))

更新:

使用公式编写一个在每天的头几个小时运行的代理:

FIELD DaysLeft := @If(RSPOExpDate = ""; ""; @Integer((RSPOExpDate - @Today)/60/60/24))

你的列公式就是

DaysLeft 

或者您显示 red/green 旗帜图标

@If((DaysLeft)<=90; 181; 182)

我认为问题出在你的最后一行。只需将其设置为 days。这将 return 计算出的剩余天数(或过去的天数,因为它会显示负数)。

正如克努特所说,这方面的表现会很差。如果有一个每晚运行的代理来标记文档上剩余的天数并在该列中显示该字段,那么性能会好得多。您可以使用与现有相同的公式,只需将最后一行替换为公式末尾的 @SetField("DaysRemianing"; days);

已经概述的基于代理的方法是正确的。考虑使用@BusinessDays 让生活更轻松。

 @BusinessDays(startDates; endDates; daysToExclude; datesToExclude)

类似于:

@BusinessDays(RSPOExpDate; @Today)

https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.1/basic/H_BUSINESSDAYS_FUNCTION.html