我有一个莲花笔记数据库。在表单中有一个名为" ServiceDate"和另一个名为" ReadOrEdit"。
的字段" ServiceDate"字段我需要存储在日期,所以我使用
@Date(@ThisValue)
正确存储日期。
这是方案
如果ServiceDate在6个月内,则ReadOrEdit字段将显示" Editable",如果ServiceDate超过6个月,则ReadOrEdit字段将显示" ReadOnly"。在那一刻,用户还没有定义确切的6个月,所以我假设六个月大致有186(31 * 6)天。
In" ReadOrEdit"字段,我把以下代码
SixMonths := 186;
date := @Now;
calculation := (@Date(date)-@Date(ServiceDate))/((60*60*24) + 1);
result := @If(calculation > SixMonths;"ReadOnly";"Editable");
@If(@IsError(result);"no result";result)
当我向用户提出这种方法时,用户拒绝我的方法。用户认为我不应该使用天来定义6个月和6个月应按月定义,例如,今天是2017年3月1日,也就是2016年9月1日前6个月。如果日期是2016年9月1日至2017年3月1日,则ReadOrEdit字段应显示" Editable"。如果日期早于2016年9月1日,则ReadOrEdit字段应显示" ReadOnly"。
这个website激励我在ReadOrEdit字段中使用@Adjust。我使用以下代码尝试使用@Adjust来查找ServiceDate之前6个月的日期。
sixMonths :=@Date(@Adjust(ServiceDate;0;-6;0;0;0;0));
@If(@IsError(sixMonths);"no result";sixMonths)
当我运行程序时,如果输入的ServiceDate是01/03/2017,则ReadOrEdit字段将显示01/09/2016。由于结果与用户要求相同,我相信我应该在程序中使用@Adjust。我需要考虑的下一件事是如何计算今天和ServiceDate之间的几个月
我在互联网上搜索关于计算两个日期之间的月数的信息不多。我认为代码可能与我建议的代码类似,所以我开始修改代码以满足用户需求。
这是代码
today :=@Now;
sixMonths :=@Date(@Adjust(ServiceDate;0;-6;0;0;0;0));
sixMonthDays := @Abs(@Integer(( @Date(Today) - @Date(ServiceDate) )));
calculation:=(@Date(today)-@Date(sixMonths));
result := @If(calculation > sixMonthDays;"ReadOnly";"Editable");
@If(@IsError(result);"no result";result)
当我运行程序时,我注意到结果不正确。
这是我的attemtps,结果只显示" ReadOnly"无论日期是在6个月内还是日期超过6个月。
如果输入的ServiceDate是01/03/2017,它会显示" ReadOnly"
如果输入的ServiceDate是28/02/2017,它会显示" ReadOnly"
如果输入的ServiceDate是01/09/2016,它会显示" ReadOnly"
如果输入的ServiceDate是02/09/2016,它会显示" ReadOnly"
如果输入的ServiceDate是02/08/2016,它会显示" ReadOnly"
如果我更改了代码
result := @If(calculation > sixMonthDays;"ReadOnly";"Editable");
到
result := @If(calculation < sixMonthDays;"ReadOnly";"Editable");
结果仍不正确。
这是我的attemtps,结果只显示&#34;可编辑&#34;无论日期是在6个月内还是日期超过6个月。
如果输入的ServiceDate是01/03/2017,它会显示&#34; Editable&#34;
如果输入的ServiceDate是28/02/2017,它会显示&#34; Editable&#34;
如果输入的ServiceDate是01/09/2016,它会显示&#34; Editable&#34;
如果输入的ServiceDate是02/09/2016,它会显示&#34; Editable&#34;
如果输入的ServiceDate是02/08/2016,它会显示&#34; Editable&#34;
实际上我认为最终结果应该是这样的
如果输入的ServiceDate是01/03/2017,&#34; ReadOrEdit&#34;字段显示&#34;可编辑&#34;
如果输入的ServiceDate是28/02/2017,&#34; ReadOrEdit&#34;字段显示&#34;可编辑&#34;
如果输入的ServiceDate是01/09/2016,&#34; ReadOrEdit&#34;字段显示&#34;可编辑&#34;
如果输入的ServiceDate是02/09/2016,&#34; ReadOrEdit&#34;字段显示&#34; ReadOnly&#34;
如果输入的ServiceDate是02/08/2016,&#34; ReadOrEdit&#34;字段显示&#34; ReadOnly&#34;
我修改了代码,我认为代码中有错误,但我知道哪个部分。我读了这个post,但我没有理解。
感谢有人让我知道我的错误或让我知道如何计算两个日期(今天和ServiceDate)之间的月数,以便我可以设置是可编辑还是只读。非常感谢你。
答案 0 :(得分:2)
如果我理解你,可以在服务日期后的六个月内编辑某些内容吗?
您可以直接比较日期。
var delta = editor.getContents();
var text = editor.getText();
var justHtml = editor.root.innerHTML;
preciousContent.innerHTML = JSON.stringify(delta);
justTextContent.innerHTML = text;
justHtmlContent.innerHTML = justHtml;
这假定ServiceDate是日期/时间值。
如果ServiceDate小于或恰好在6个月前,则应返回“Editable”,如果ServiceDate超过6个月,则返回“ReadOnly”。 @Today就像@Now,除了它是一个没有时间的日期值。