2014-01-23 2 views
0

Как проверить ошибку за неправильную дату. Я хотел бы, чтобы проверить в триггере отпуска самОпределенная пользователем ошибка на дату

Я использовал следующий код, но не работает :(

может кто-нибудь помочь.

Thanksin вперед.

С уважением, Рави. dtJoin - поле базы данных.

Ниже приведен код, который я пробовал.

=============================================================================================================

DEFINE VARIABLE vDATE AS DATE  NO-UNDO. 
    DEFINE VARIABLE vToday AS DATE  NO-UNDO. 

    DEFINE VARIABLE leap AS LOGICAL  NO-UNDO. 

    ASSIGN 
    vToday = DATE(DtJoin:SCREEN-VALUE) NO-ERROR. 

    IF ((YEAR(vToday) MODULO 400 = 0)OR(year(vToday) MODULO 4 = 0)AND(year(vToday) MODULO 100 = 0)) 
    THEN 
     leap = TRUE. 
    ELSE 
     leap = FALSE. 

     MESSAGE MONTH(vToday) 
      VIEW-AS ALERT-BOX INFO BUTTONS OK. 
     /* IF MONTH(vToday) = 1 /* OR MONTH(vToday) = 3 OR MONTH(vToday) = 5 OR MONTH(vToday) = 7 OR MONTH(vToday) = 8 OR MONTH(vToday) = 10 OR MONTH(vToday) = 12 */ THEN 
    IF DATE(vToday) > 31 THEN 
     MESSAGE "Invalid Date" 
      VIEW-AS ALERT-BOX ERROR BUTTONS OK. 
    ELSE 
     ASSIGN 
     vdate = vToday. 
    */ 
    /* 
    ELSE IF MONTH(vToday) = 4 OR MONTH(vToday) = 6 OR MONTH(vToday) = 9 OR MONTH(vToday) = 11 THEN 
    IF DATE(vToday) > 30 THEN 
     MESSAGE 
     VIEW-AS ALERT-BOX ERROR BUTTONS OK. 
    ELSE 
     ASSIGN 
     vdate = vToday. 

    ELSE IF MONTH(vToday) = 2 AND leap THEN 
     IF DATE(vToday) > 29 THEN 
      MESSAGE 
       VIEW-AS ALERT-BOX ERROR BUTTONS OK. 
     ELSE 
     ASSIGN 
      vdate = vToday. 
    ELSE 
     IF DATE(vToday) > 28 THEN 
      MESSAGE 
       VIEW-AS ALERT-BOX ERROR BUTTONS OK. 
     ELSE 
      ASSIGN 
       vDate = vToday. 
       */ 
    END. 
+0

Это какой-то вид SQL? Добавить языковой тег. – doctorlove

+0

@doctorlove - НЕТ, это от Progress 4GL. – Ravi

ответ

1

Вы делаете это очень тяжело для себя!

Это должно сделать это:

ASSIGN 
    vToday = DATE(DtJoin:SCREEN-VALUE) NO-ERROR. 

IF vToday = ? THEN DO: 
    MESSAGE "Enter another date" VIEW-AS ALERT-BOX. 
END. 

Можно также установить поле ввода как тип даты, и что будет в основном заботиться о себе. Если вы не хотите, чтобы вы вставляли что-то вроде этого в триггере LEAVE поля:

DEFINE VARIABLE vToday AS DATE. 

ASSIGN 
    vToday = DATE(SELF:SCREEN-VALUE) NO-ERROR. 

IF vToday = ? THEN DO: 
    MESSAGE "Enter another date" VIEW-AS ALERT-BOX ERROR. 
    RETURN NO-APPLY. 
END. 
Смежные вопросы