return 关键字不起作用...如何停止程序的 运行?
return keyword wont work... how to stop running of program?
我有两个按钮做不同的工作,但有共同的检查数据输入
所以我为该检查制作了一个程序单元然后我从这两个按钮调用它
但我的问题是,当检查中出现错误时,我收到了用户消息和我所做的所有事情,但它返回到按钮内的代码并继续前进我设置了 return每个条件末尾的 关键字从 运行 获取代码,但它不起作用请问是什么问题?在错误检查通过之前我如何停止我的代码?!!
检查数据输入程序单元示例
PROCEDURE CHECK_ENTRY IS
BEGIN
IF :block1.text_item1 IS NULL THEN
SET_ITEM_INSTANCE_PROPERTY('block1.text_item1',CURRENT_RECORD,VISUAL_ATTRIBUTE,'ERROR_ATR');
SHOW_MESSAGE('example msg .');
RETURN;
ELSIF :block2.text_item2 IS NULL THEN
SET_ITEM_INSTANCE_PROPERTY('block2.text_item2',CURRENT_RECORD,VISUAL_ATTRIBUTE,'ERROR_ATR');
SHOW_MESSAGE('example msg2 .');
RETURN;
END IF ;
END;
on_button_press 触发器中的代码示例
PROCEDURE procedure_name IS
BEGIN
IF FORM_SUCCESS THEN
DISPLAY_ERROR;
:block1.text_item1:= :block2.text_item2;
:block2.text_item2:=:block1.text_item1;
**CHECK_ENTRY;** /* here is the calling of previous program unit that check the data entry then get back to here in case there is no error and continue commit the data and disabling text item so user wont be able to modify the data */
COMMIT_FORM;
program_unit('ORDER_DONE');
ELSE
ROLLBACK;
DISPLAY_ERROR;
SHOW_MESSAGE('please connect administrator.');
END IF;
END;
你的代码应该是这样的:
PROCEDURE CHECK_ENTRY IS
BEGIN
IF :block1.text_item1 IS NULL THEN
SET_ITEM_INSTANCE_PROPERTY('block1.text_item1',CURRENT_RECORD,VISUAL_ATTRIBUTE,'ERROR_ATR');
SHOW_MESSAGE('example msg .');
raise form_trigger_failure;
ELSIF :block2.text_item2 IS NULL THEN
SET_ITEM_INSTANCE_PROPERTY('block2.text_item2',CURRENT_RECORD,VISUAL_ATTRIBUTE,'ERROR_ATR');
SHOW_MESSAGE('example msg2 .');
raise form_trigger_failure;
END IF ;
END;
PROCEDURE procedure_name IS
BEGIN
:block1.text_item1:= :block2.text_item2;
:block2.text_item2:=:block1.text_item1;
CHECK_ENTRY;
IF FORM_SUCCESS THEN
DISPLAY_ERROR;
COMMIT_FORM;
program_unit('ORDER_DONE');
ELSE
ROLLBACK;
DISPLAY_ERROR;
SHOW_MESSAGE('please connect administrator.');
END IF;
END;
我有两个按钮做不同的工作,但有共同的检查数据输入 所以我为该检查制作了一个程序单元然后我从这两个按钮调用它 但我的问题是,当检查中出现错误时,我收到了用户消息和我所做的所有事情,但它返回到按钮内的代码并继续前进我设置了 return每个条件末尾的 关键字从 运行 获取代码,但它不起作用请问是什么问题?在错误检查通过之前我如何停止我的代码?!!
检查数据输入程序单元示例
PROCEDURE CHECK_ENTRY IS
BEGIN
IF :block1.text_item1 IS NULL THEN
SET_ITEM_INSTANCE_PROPERTY('block1.text_item1',CURRENT_RECORD,VISUAL_ATTRIBUTE,'ERROR_ATR');
SHOW_MESSAGE('example msg .');
RETURN;
ELSIF :block2.text_item2 IS NULL THEN
SET_ITEM_INSTANCE_PROPERTY('block2.text_item2',CURRENT_RECORD,VISUAL_ATTRIBUTE,'ERROR_ATR');
SHOW_MESSAGE('example msg2 .');
RETURN;
END IF ;
END;
on_button_press 触发器中的代码示例
PROCEDURE procedure_name IS
BEGIN
IF FORM_SUCCESS THEN
DISPLAY_ERROR;
:block1.text_item1:= :block2.text_item2;
:block2.text_item2:=:block1.text_item1;
**CHECK_ENTRY;** /* here is the calling of previous program unit that check the data entry then get back to here in case there is no error and continue commit the data and disabling text item so user wont be able to modify the data */
COMMIT_FORM;
program_unit('ORDER_DONE');
ELSE
ROLLBACK;
DISPLAY_ERROR;
SHOW_MESSAGE('please connect administrator.');
END IF;
END;
你的代码应该是这样的:
PROCEDURE CHECK_ENTRY IS
BEGIN
IF :block1.text_item1 IS NULL THEN
SET_ITEM_INSTANCE_PROPERTY('block1.text_item1',CURRENT_RECORD,VISUAL_ATTRIBUTE,'ERROR_ATR');
SHOW_MESSAGE('example msg .');
raise form_trigger_failure;
ELSIF :block2.text_item2 IS NULL THEN
SET_ITEM_INSTANCE_PROPERTY('block2.text_item2',CURRENT_RECORD,VISUAL_ATTRIBUTE,'ERROR_ATR');
SHOW_MESSAGE('example msg2 .');
raise form_trigger_failure;
END IF ;
END;
PROCEDURE procedure_name IS
BEGIN
:block1.text_item1:= :block2.text_item2;
:block2.text_item2:=:block1.text_item1;
CHECK_ENTRY;
IF FORM_SUCCESS THEN
DISPLAY_ERROR;
COMMIT_FORM;
program_unit('ORDER_DONE');
ELSE
ROLLBACK;
DISPLAY_ERROR;
SHOW_MESSAGE('please connect administrator.');
END IF;
END;