zoukankan      html  css  js  c++  java
  • [转]Form Builder:app_field.clear_dependent_fields和APP_FIELD.set_dependent_field的用法

    转自:http://www.cnblogs.com/toowang/p/3668070.html

    可以调用APP_FIELD.clear_dependent_fields和APP_FIELD.set_dependent_field来将两个(或多个)Item建立关联,当一个为空时,另一个不可录入,反正,可录入,且父Item Field变化时,子Fields清空。
    ----------------------------------------------------------------------------------------------------------------------------------
    APP_FIELD.clear_dependent_fields(
                                master_field VARCHAR2,
                                     field1       VARCHAR2,
                                     field2       VARCHAR2 DEFAULT NULL,
                                     field3       VARCHAR2 DEFAULT NULL,
                                     field4       VARCHAR2 DEFAULT NULL,
                                     field5       VARCHAR2 DEFAULT NULL,
                                     field6       VARCHAR2 DEFAULT NULL,
                                     field7       VARCHAR2 DEFAULT NULL,
                                     field8       VARCHAR2 DEFAULT NULL,
                                     field9       VARCHAR2 DEFAULT NULL,
                                     field10      VARCHAR2 DEFAULT NULL)
    实现:如果master_field为空,则清空后续所有fieldn.
    ----------------------------------------------------------------------------------------------------------------------------------
    APP_FIELD.set_dependent_field(
                                  even                   VARCHAR2,
                                  master_field        VARCHAR2,
                                  dependent_field  VARCHAR2,
                                  invalidate            BOOLEAN DEFAULT FALSE)
    实现:如果master_field为空,则dependent_Field的ENTERABLE为PROPERTY_OFF;
              反之, 如果master_field不空,则dependent_Field的ENTERABLE为PROPERTY_ON。
              event可以为'..VALIDATE..','INIT','PRE-RECORD', 'WHEN-NEW-RECORD-INSTANCE','POST-QUERY'。
    这个Procedure其实调用了另外一个Procedure
    APP_FIELD.set_dependent_field(
                               event                   VARCHAR2,
                               condition             BOOLEAN,
                               dependent_field  VARCHAR2,
                               invalidate            BOOLEAN DEFAULT FALSE)
    条件condition为(name_in(master_field) is not null)
    ----------------------------------------------------------------------------------------------------------------------------------
    ----------------------------------------------------------------------------------------------------------------------------------
    附Procedure原码:
      PROCEDURE clear_dependent_fields(master_field VARCHAR2,
                                       field1       VARCHAR2,
                                       field2       VARCHAR2 DEFAULT NULL,
                                       field3       VARCHAR2 DEFAULT NULL,
                                       field4       VARCHAR2 DEFAULT NULL,
                                       field5       VARCHAR2 DEFAULT NULL,
                                       field6       VARCHAR2 DEFAULT NULL,
                                       field7       VARCHAR2 DEFAULT NULL,
                                       field8       VARCHAR2 DEFAULT NULL,
                                       field9       VARCHAR2 DEFAULT NULL,
                                       field10      VARCHAR2 DEFAULT NULL) IS
      BEGIN
        COPY('Entering app_field.clear_dependent_fields.','global.frd_debug');
        if (name_in(master_field) is null) then
          clear_fields(field1, field2, field3, field4, field5,
                       field6, field7, field8, field9, field10);
        end if;
        COPY('Completed app_field.clear_dependent_fields.','global.frd_debug');
      END clear_dependent_fields;
    
      PROCEDURE set_dependent_field(event           VARCHAR2,
                                    master_field    VARCHAR2,
                                    dependent_field VARCHAR2,
            invalidate  BOOLEAN DEFAULT FALSE) IS
      BEGIN
        COPY('Entering app_field.set_dependent_field.  Event is '||event||'.','global.frd_debug');
        set_dependent_field(event,
                            (name_in(master_field) is not null),
                            dependent_field,
          invalidate);
        COPY('Completed app_field.set_dependent_field.  Event is '||event||'.','global.frd_debug');
      END set_dependent_field;
    
      PROCEDURE set_dependent_field(event           VARCHAR2,
                                    condition       BOOLEAN,
                                    dependent_field VARCHAR2,
            invalidate  BOOLEAN DEFAULT FALSE) IS
        value    NUMBER;
        itemtype VARCHAR2(32);
      BEGIN
        COPY('Entering app_field.set_dependent_field.  Event is '||event||'.','global.frd_debug');
        if (condition) then
          value := PROPERTY_ON;
        else
          value := PROPERTY_OFF;
        end if;
    
        if ((instr(event, 'VALIDATE') <> 0) or (event = 'INIT')) then
          app_item_property.set_property(dependent_field, ENTERABLE, value);
          itemtype := get_item_property(dependent_field, item_type);
          if invalidate then
            set_item_property(dependent_field, ITEM_IS_VALID, PROPERTY_FALSE);
          elsif not(itemtype = 'CHECKBOX' or
                   (itemtype = 'LIST' and
                    get_item_property(dependent_field, required) = 'TRUE')) then
            if (name_in(dependent_field) is not null) then
              copy('', dependent_field);
            end if;
          end if;
    
        elsif (event in ('PRE-RECORD', 'WHEN-NEW-RECORD-INSTANCE')) then
          app_item_property.set_property(dependent_field, ENTERABLE, value);
    
        elsif (event = 'POST-QUERY') then
          --
          -- In R11 this set the visual attribute. Now we get the coloring
          -- by setting the enterable property
          --
          app_item_property.set_property(dependent_field, ENTERABLE, value);
        else
          fnd_message.debug('DEVELOPER ERROR: Invalid arg '||
            event||' to set_dependent field');
        end if;
        COPY('Completed app_field.set_dependent_field.  Event is '||event||'.','global.frd_debug');
      EXCEPTION
        when OTHERS then
          app_debug.setpoint('app_field.set_dependent_field',
                             event||', '||dependent_field);
          RAISE;
      END set_dependent_field;
    ############################## 通往精神的路很多,物质只是其中一种 ##############################
    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
  • 相关阅读:
    自己写的一个校验IP、IP掩码、IP段的方法
    JS 数组方法splice的源码探究
    element ui 的时间选择控件
    浅谈闭包
    tensorFlow-深度学习训练并行模式
    tensorflow-TensorBoard
    tensorflow-RNN和LSTM
    tensorflow-TFRecord报错ValueError: Protocol message Feature has no "feature" field.
    tensorflow-mnist报错[WinError 10060] 由于连接方在一段时间后没有正确答复解决办法
    旋转图片,增加神经网络的准确率
  • 原文地址:https://www.cnblogs.com/pompeii2008/p/5406875.html
Copyright © 2011-2022 走看看