Arrays 下标必须介于1和影响日期转换的数组大小之间

Arrays 下标必须介于1和影响日期转换的数组大小之间,arrays,crystal-reports,subscript,Arrays,Crystal Reports,Subscript,我有一个公式,它取一个数组,它输出的数字是05/28/14,需要格式化为日期。我正在使用这段代码,它告诉我“下标必须介于1和数组大小之间。”。我认为问题出在我的月份字段上,但我不确定 stringvar array dates; numbervar d; numbervar m; numbervar y; dates := split({custinvd.cid-sparedate},","); d := val(right(dates[1],2)); m := tonumb

我有一个公式,它取一个数组,它输出的数字是05/28/14,需要格式化为日期。我正在使用这段代码,它告诉我“下标必须介于1和数组大小之间。”。我认为问题出在我的月份字段上,但我不确定

stringvar array dates;
numbervar d;  
numbervar m;  
numbervar y;  
dates := split({custinvd.cid-sparedate},",");  
d := val(right(dates[1],2));  
m := tonumber(dates[2]);
y := val(left(dates[3],4));  
cdate(d,m,y);

假设
{custinvd.cid sparedate}
的格式始终为“04/14/2014;?;?;?;?;?;?;?”,则只需去除问号和分号分隔符,并在CR中使用
date()
函数即可将其转换为日期:

date(split({custinvd.cid-sparedate},";")[1])
或者,如果始终有前导零,甚至可以使用

date(left({custinvd.cid-sparedate},10))

从日期返回多少个值?我猜它只返回1个值。。。而不是3个值。。。使用
Ubound
检查数组中的值的数量这里真正的问题是
{custinvd.cid sparedate}
中的数据是什么样子。这组数组的有趣之处在于,它返回的信息类似于“04/14/2014;?;?;?;?”(我不负责此字段的设置,目前无法更改)。从我收集的数据来看,它只会显示第一个值,即此作业的日期,其余的值将始终是问号。从那以后,我改变了日期:=split({custinvd.cid sparedate},“,”);截止日期:=拆分({custinvd.cid sparedate},“;”);但它仍然留给我最初的问题,我几乎觉得有必要在第一个问题之后再进行第二次拆分。@Siva
cdate()
date()
是等效的函数,所以使用哪一个都不重要。