Oracle Forms — проблема «FND_MESSAGE»

Я создал одно всплывающее окно в Oracle Forms (Custom PLL — Oracle EBS R12)

fnd_message.set_name ('XX', 'CASCADE_SHIPPING_METHOD');
         --    fnd_message.show;
         n_button_selection :=
            fnd_message.question ('Yes',
                                  'No',
                                  '',
                                  1,
                                  2,
                                  3);
 
 
IF n_button_selection = 1
         THEN
             Procedure1();
         ELSIF n_button_selection = 2
         THEN
             Procedure2();
         ELSE
            NULL;
         END IF;

Этот код работает нормально, но если пользователь ЗАКРЫВАЕТ форму (нажав на метку «X»), выполняется условие ELSIF и вызывается процедура2. Я ожидаю, что элемент управления перейдет к ELSE и ничего не сделает. Пожалуйста, помогите.

Я изменил код как

 fnd_message.set_name ('XX', 'CASCADE_SHIPPING_METHOD');
      
         n_button_selection :=
            fnd_message.question ('Yes',
                                  'No',
                                  'Cancel',
                                  1,
                                  2,
                                  3);

         --If user select "Yes" option to cascade, then enter inside if and call the proc to cascade

         IF n_button_selection = 1
         THEN
          MESSAGE('Pressed Yes-For Lines Cascading');
          shipping_method (l_header_id,
                            ship_method,
                           'Lines');
         ELSIF n_button_selection = 2
         THEN
         MESSAGE('Pressed No-For Header Cascading');
            shipping_method (l_header_id,
                              ship_method,
                               'Header');
         ELSE
         	MESSAGE('Inside ELSE Condition');
            NULL;
         END IF;

но все же, если я закрою форму, элемент управления перейдет к Выбор кнопки 2, то есть ELSIF.


person TAT    schedule 16.02.2016    source источник


Ответы (1)


Попробуй это:

fnd_message.set_name ('XX', 'CASCADE_SHIPPING_METHOD');
         --    fnd_message.show;
         n_button_selection :=
            fnd_message.question ('Yes',
                                  'No',
                                  'Cancle',
                                  1,
                                  3);


IF n_button_selection = 1
         THEN
             Procedure1();
         ELSIF n_button_selection = 2
         THEN
             Procedure2();
         ELSE
            NULL;
         END IF;
person Vinish Kapoor    schedule 18.02.2016
comment
Привет, Виниш, Спасибо за ваш ответ, я попробую это и сообщу вам, если это сработает .. еще раз большое спасибо за ваше предложение. - person TAT; 18.02.2016
comment
Пожалуйста, посмотрите мое обновление .. на самом деле оно снова ушло в ELSIF. Я изменил условие IF на CASE . все же, если мы нажмем X, он перейдет к СЛУЧАЮ 2 - person TAT; 18.02.2016
comment
Привет, я снова отредактировал ответ, попробуй этот. На самом деле после параметра «Отменить» 1 — для кнопки «ОК» по умолчанию, а 3 — для кнопки «Отмена» по умолчанию, нет необходимости в другом параметре, так как это для значка. - person Vinish Kapoor; 19.02.2016