首先,链接必须在单独的段落中,以便可以单独控制。
其次,您必须有一个视图,其中第一列已排序并包含用户名,然后是日常考勤文件中字段的日期。例如,它应该采用类似“Joe User/Org-01-01-12”的格式。视图中的第二列应该包含文档中的状态。为了得到这个答案,我们称该视图为“DailyAttendance”。
第三,你有三种情况:用户当天的考勤凭证不存在,存在且状态为“签到”,或存在且状态为“签出”。可能还有第四种情况,文档存在但状态既不是“签入”也不是“签出”,但您的逻辑可能应该尽量避免这种情况,无论如何我将编写隐藏时公式这样在这种情况下,两个链接都将被隐藏。
现在,在大多数情况下,用 See-When 而不是 Hide-When 来思考实际上更容易一些,所以我将把你的需求重新表述为 See-Whens。您的 See-WHen 规则是:
- 当当前用户和当天的每日考勤文档不存在时,查看签到热点。
- 当当前用户和当天存在每日考勤文档时,查看签出热点,文档中的状态字段为“签到”。
要在 hide-when 公式中使用 see-when 逻辑,您只需根据 see-when 规则编写公式,然后在其周围放置一个逻辑 not 以获得最终结果。
包含“签入”热点的段落的隐藏时间将如下所示:
key := @Name([CN];@Username) + "-" + @Text(@Today);
status := @DbLookup("Notes":"NoCache";"":"";"DailyAttendance";key;2);
notFound := @IsError(status);
seeWhen = notFound;
!(seeWHen);
大多数专业的 Notes 程序员会将其浓缩为更短的公式。我已经把它留在了一步一步的格式中,以使其尽可能明显。
包含“签出”热点的段落的隐藏时间将如下所示:
key := @Name([CN];@Username) + "-" + @Text(@Today);
status := @DbLookup("Notes":"NoCache";"":"";"DailyAttendance";key;2);
found := !(@IsError(status));
seeWhen = found & (status = "Checked In");
!(seeWhen)