我正在将日期转换为其周数,但是我收到了错误消息。你能救我吗?
这是我的代码
function WeekNumber returns integer ( OrderRel.ReqDate as date ):
define var vDay as integer no-undo.
vDay = OrderRel.ReqDate - date( 1, 1, YEAR( OrderRel.ReqDate ) ) + 1.
return integer( truncate( vDay / 7, 0 ) ) + ( if vDay mod 7 <> 0 then 1 else 0 ).
end function.
答案 0 :(得分:2)
看起来您正在使用表字段作为函数的输入?您应该将其更改为局部变量,然后使用记录调用它:
FUNCTION WeekNumber RETURNS INTEGER ( INPUT pdaDate as DATE ):
DEFINE VAR vDay AS INTEGER NO-UNDO.
vDay = pdaDate - DATE( 1, 1, YEAR( pdaDate ) ) + 1 .
RETURN INTEGER( TRUNCATE( vDay / 7, 0 ) ) + ( IF vDay MOD 7 <> 0 THEN 1 ELSE 0 ) .
END FUNCTION.
MESSAGE WeekNumber( OrderRel.ReqDate ) VIEW-AS ALERT-BOX.
这使得函数编译并运行!
另一件事是,根据您计算的周数,可能是错误的。
MESSAGE WeekNumber( DATE("2016-09-02") ) VIEW-AS ALERT-BOX.
这在您的系统中可能是正确的,但至少在瑞典没有使用ISO8601标准的周编号。根据这些标准,2016年2月是第35周......