Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lotus notes 在@For循环中使用数组时对话框列表字段中出现错误_Lotus Notes_Lotus_Lotus Formula - Fatal编程技术网

Lotus notes 在@For循环中使用数组时对话框列表字段中出现错误

Lotus notes 在@For循环中使用数组时对话框列表字段中出现错误,lotus-notes,lotus,lotus-formula,Lotus Notes,Lotus,Lotus Formula,我在对话框列表字段中发现了一个有趣的错误 我正在尝试创建一个从今年开始减去17年的列表,并将该列表向后追溯30年。(例:2003年、2002年、2001年、2000年、1973年)。显然,我不想硬编码这些选项,因为每年我都要回去改变它 我创建了一个简单的对话框列表字段,并选择“使用公式进行选择”,然后输入以下公式: startYear := @Year(@Now)-17; @For( x:=1; x<=30; x:=x+1; temp[x] := startYear-x); temp s

我在对话框列表字段中发现了一个有趣的错误

我正在尝试创建一个从今年开始减去17年的列表,并将该列表向后追溯30年。(例:2003年、2002年、2001年、2000年、1973年)。显然,我不想硬编码这些选项,因为每年我都要回去改变它

我创建了一个简单的对话框列表字段,并选择“使用公式进行选择”,然后输入以下公式:

startYear := @Year(@Now)-17; @For( x:=1; x<=30; x:=x+1; temp[x] := startYear-x); temp

startYear:=@Year(@Now)-17@对于(x:=1;x首先要回答您的问题:不可能像在公式中那样指定数组的下标,请参阅设计器帮助(thanx@Richard Schwartz)中的这段摘录:

下标运算符不能用于赋值语句的左侧。也就是说,不能将值赋给下标元素。必须生成完整的列表,然后再赋给它

第二:我检查了你的公式,如果你把它放在一个字段的“值”-公式中,那么它不会被F9修改,只有当把它放在对话框列表公式中时,我才能复制相同的行为…但我不介意:因为它根本不是一个有效的公式,所以这个imho不能被称为“Bug”

下面是你修正后的公式:

_startYear := @Year(@Now)-17; 
@For( _x:=1; _x<=30; _x:=_x+1; 
    _temp := @Text(_startYear-_x);
    _myArr := @Trim( _myArr : _temp )
);
_myArr
@顺便说一句,公式语言对于列表来说非常酷,可以用不同的方法解决这个问题。例如,使用daterange和explode:

_start := @Adjust(@Today;-17;0;0;0;0;0);
_end := @Adjust(@Today;13;0;0;0;0;0);
_daterange := @TextToTime( "[" + @Text(_start) + "-" + 
@Text(_end)+"]");
_allDates := @Explode( _dateRange );
@Text(@year(_allDates))

但我承认:虽然它很酷,但它并不是真正直观的,但在Notes 5中,如果没有@For,这将是解决方案。

谢谢,但我仍然想知道保存代码时重写代码到底是怎么回事:)@RoyRumaner来自列表下标操作符的帮助:“下标运算符不能用于赋值语句的左侧。也就是说,不能为下标元素赋值。您必须构建完整的列表,然后分配它。“我在我的答案中添加了您从帮助中摘录的内容。Thanx@RichardSchwartzWell解释了这一点-谢谢RIchard。我想在编写@Functions 25年后,还有更多东西需要学习
 _myArr := @Trim( _temp : _myArr )
_start := @Adjust(@Today;-17;0;0;0;0;0);
_end := @Adjust(@Today;13;0;0;0;0;0);
_daterange := @TextToTime( "[" + @Text(_start) + "-" + 
@Text(_end)+"]");
_allDates := @Explode( _dateRange );
@Text(@year(_allDates))