WorkBook11.cpt
给你的方法,供你参考:
前提:周默认指的是当前年的周。
假设:
开始日期控件名为sdate,结束日期控件名为edate
周列表我这用的是一个纯数字的下拉菜单,如果要改成“第xx周”,也可以根据下面的方法,再完善。
设置“周”下拉菜单的“编辑后”事件JS为:
var value=this.getValue();
var gs1="=format(DATEINWEEK(DATEDELTA(today(),("+value+"-week(today()))*7),1),\"yyyy-MM-dd\")";
var gs2="=format(DATEINWEEK(DATEDELTA(today(),("+value+"-week(today()))*7),-1),\"yyyy-MM-dd\")";
var sdate=FR.remoteEvaluate(gs1);
var edate=FR.remoteEvaluate(gs2);
this.options.form.getWidgetByName("sdate").setValue(sdate);
this.options.form.getWidgetByName("edate").setValue(edate);

说明:
因为FR的公式没有直接可以通过周数推算出开始和结束日期的(可能是我了解有限),所以改成根据当前日期today()的周数与目标周数(默认为当前年)的差值,通过DATEDELTA()计算出目标周数中的一个日期。
然后再通过公式DATEINWEEK(),计算出目标周的开始和结束日期。
PS:这里是在JS中使用了FR内置公式进行的计算,JS高手也可以直接用JS计算。
最后再通过JS给“开始日期”和“结束日期”控件赋值。