• [Form Builder]内置函数execute_trigger、do_key详解


    转:http://yedward.net/?id=82

    1、execute_trigger:用来运行一个指定的触发器,常用来运行用户自定义的触发器。

        语法:procedure execute_trigger(trigger_name varchar2),其中trigger_name是指定的一个有效的用户命名的触发器。execute_trigger无法指定调用的trigger的范围,所以forms一般会从最底层的触发器开始,然后向上处理,所以我见过一些用到execute_trigger的时候,它调用的自定义触发器都写在了form级别。

        如果要运行一个关联了键(Key)的内置触发器,应该使用内置函数do_key而不是execute_trigger。例如execute_trigger('KEY-NEXT-ITEM')就应该改为do_key('NEXT_ITEM')。

        值得注意的是,对于内置的触发器虽然也可以用execute_trigger来执行,但是这种方式并不是推荐的,因为默认的失败处理行为是不同的,它不像forms按照规则自动调用触发器那样处理。例如,在默认的处理中,如果when-validate-item触发器失败,那么它会抛出一个异常并停止form的运行,但是,如果when-validate-item是由execute_trigger来调用执行的,那么如果调用执行失败了,这个失败并不会停止form的运行,而是在执行execute_trigger以后返回的时候把变量form_failure设置为false。所以,一般的execute_trigger更常用在执行自定义的触发器。

    下面是我在看form中menu的时候的一段代码,放在这里加强学习:

    set_menu_item_property ('VIEW_MENU.DEFAULT', CHECKED, PROPERTY_FALSE);
    set_menu_item_property ('VIEW_MENU.SAVED', CHECKED, PROPERTY_FALSE);
    set_menu_item_property ('VIEW_MENU.CUSTOM', CHECKED, PROPERTY_TRUE);
    set_menu_item_property ('VIEW_MENU.SET_1', CHECKED, PROPERTY_FALSE);
    Execute_trigger('T_view_custom'); -- T_view_custom就是自定义的触发器

        至于上面涉及到的form_failure以及form_success,它们表示的是返回上一次form执行结果的布尔表达式,至于是true还是false,请参见下面:

        对于form_failure,其返回值如下:

        success            FALSE

        failure             TRUE

        fata error         FALSE

    对于form_success,其返回值如下:

        success            TRUE

        failure              FALSE

        fata error         FALSE

    2、do_key:运行对应于特定内置子程序的键触发器,它的功能相当于按下相应的功能键。

    内置子程序 键触发器 相关的功能键
    CLEAR_BLOCK                            Key-CLRBLK                            [Clear Block]           
                    CLEAR_FORM                            Key-CLRFRM            [Clear Form]
                    CLEAR_RECORD                            Key-CLRREC                            [Clear Record]           
                    COMMIT_FORM                            Key-COMMIT                            [Commit]           
                    COUNT_QUERY                            Key-CQUERY                            [Count Query Hits]           
                    CREATE_RECORD                            Key-CREREC                            [Insert Record]           
                    DELETE_RECORD                            Key-DELREC                            [Delete Record]           
                    DOWN                            Key-DOWN                            [Down]           
                    DUPLICATE_ITEM                            Key-DUP-ITEM                            [Duplicate Item]           
                    DUPLICATE_RECORD                            Key-DUPREC                            [Duplicate Record]           
                    EDIT_TEXTITEM                            Key-EDIT                            [Edit]           
                    ENTER                            Key-ENTER                            [Enter]           
                    ENTER_QUERY                            Key-ENTQRY                            [Enter Query]           
                    EXECUTE_QUERY                            Key-EXEQRY                            [Execute Query]           
                    EXIT_FORM                            Key-EXIT                            [Exit/Cancel]           
                    HELP                            Key-HELP                            [Help]           
                    LIST_VALUES                            Key-LISTVAL                            [List]           
                    LOCK_RECORD                            Key-UPDREC                            [Lock Record]           
                    NEXT_BLOCK                            Key-NXTBLK                            [Next Block]           
                    NEXT_ITEM                            Key-NEXT-ITEM                            [Next Item]           
                    NEXT_KEY                            Key-NXTKEY                            [Next Primary Key Fld]           
                    NEXT_RECORD                            Key-NXTREC                            [Next Record]           
                    NEXT_SET                            Key-NXTSET                            [Next Set of Records]           
                    PREVIOUS_BLOCK                            Key-PRVBLK                            [Previous Block]           
                    PREVIOUS_ITEM                            Key-PREV-ITEM                            [Previous Item]           
                    PREVIOUS_RECORD                            Key-PRVREC                            [Previous Record]           
                    PRINT                            Key-PRINT                            [Print]           
                    SCROLL_DOWN                            Key-SCRDOWN                            [Scroll Down]           
                    SCROLL_UP                            Key-SCRUP                            [Scroll Up]           
                    UP                            Key-UP                            [Up]           

    表1:内置子程序 - 键触发器 - 功能键对应表

        需要注意的是do_key只接受内置子程序的名字作为参数,而不是键的名字,上面的对应表非常重要哦,在以后开发的时候参考非常有用,比如do_key('ENTER_QUERY')和execute_trigger('Key-ENTQRY')。

    ############################## 通往精神的路很多,物质只是其中一种 ##############################
    http://www.onejava.com/article/oracle/wip/wiptop.htm
    https://docs.oracle.com/cd/A60725_05/html/comnls/us/index.htm
    http://www.oracle.com/technetwork/cn/developer-tools/apex/getting-started-094884-zhs.html
    https://docs.oracle.com/cd/B34956_01/current/html/docset.html
  • 相关阅读:
    treeview 的动态的绑定
    数据库组件
    webconfig,form验证存角色
    treeView
    web.config 的读写与配置
    .net 开发精华
    asp.net
    在ASP.NET中实现AJAX
    验证js
    用js将form表单同时提交到两个不同页面的方法
  • 原文地址:https://www.cnblogs.com/pompeii2008/p/5412667.html
Copyright © 2020-2023  润新知