Progress 4GL - 定义变量月/年

时间:2015-06-12 13:42:09

标签: date range progress-4gl 4gl

问题在于,我需要在下面的变量上创建一个日期范围。

    define variable s_date as character format "99/9999" no-undo.

我的数据库中有一个start_date列(格式" 99/99/9999"(dd / mm / yyyy))输入客户销售订单的日期。

我需要做的是设置变量以创建日期范围,搜索并显示定义的月份和年份的每个销售订单的结果。

PS:我正在使用表单,因此用户可以定义月份和年份的范围。

1 个答案:

答案 0 :(得分:0)

这是让你入门的东西。您将不得不考虑将其转换为适合您的表单。

如果您使用的是没有ADD-INTERVAL功能的旧版本,您可以使用DATE功能并在月份中添加+1(请记住,如果月份是12月(12),那么您就是将不得不增加年份,并将月份设置为1)。

DEFINE VARIABLE cFromDate  AS CHARACTER   NO-UNDO.
DEFINE VARIABLE dtFromDate AS DATE        NO-UNDO LABEL "From".
DEFINE VARIABLE dtTomDate  AS DATE        NO-UNDO LABEL "Tom".


DEFINE VARIABLE iMonth     AS INTEGER     NO-UNDO.
DEFINE VARIABLE iYear      AS INTEGER     NO-UNDO.



UPDATE cFromDate FORMAT "99/9999" NO-ERROR.

IF LENGTH(cFromDate) <> 6 THEN DO:
    MESSAGE "Invalid format" VIEW-AS ALERT-BOX ERROR.
    RETURN ERROR.
END.

ASSIGN
    iMonth = INTEGER(SUBSTRING(cFromDate,1,2)) 
    iYear  = INTEGER(SUBSTRING(cFromDate,3,4)) NO-ERROR.

IF iMonth < 1 OR iMonth > 12 THEN DO:
    MESSAGE "Invalid month" VIEW-AS ALERT-BOX ERROR.
    RETURN ERROR.
END.

IF iYear < 1990 OR iYear > 2020 THEN DO:
    MESSAGE "Invalid year" VIEW-AS ALERT-BOX ERROR.
    RETURN ERROR.
END.

ASSIGN
    dtFromDate = DATE(iMonth, 1, iYear)
    dtTomDate  = ADD-INTERVAL(dtFromDate, 1, "month") - 1.


DISPLAY 
    dtFromDate FORMAT "9999-99-99"
    dtTomDate  FORMAT "9999-99-99".