2016-02-16 9 views
1

Я создал один POPUP в формах Oracle (Пользовательские ФАПЧ - Oracle EBS R12)Oracle Forms- 'FND_MESSAGE' вопрос

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 
 
      \t MESSAGE('Inside ELSE Condition'); 
 
      NULL; 
 
     END IF;

, но по-прежнему Если закрыть форму управления Переход к Кнопка выбора 2, который ELSIF.

ответ

0

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

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; 
+0

Привет Vinish, Спасибо за ваш ответ, будет пытаться это, и пусть вы знаете, если он работает .. раз большое спасибо за ваш suggesytion. –

+0

Пожалуйста, см. Мое обновление .. на самом деле он снова отправился в ELSIF. Я изменил условие IF на CASE. все еще, если мы нажмем на X, перейдем к CASE 2 –

+0

Привет, я снова отредактировал ответ, попробуйте этот. Фактически после параметра Cancle, 1 для кнопки ok по умолчанию и 3 для кнопки cancle по умолчанию, нет необходимости в другом параметре, как и для значка. –