Saturday, 24 August 2013

Duplicate Check in a block

FUNCTION ffn_duplicate_check (
   p_blockname   VARCHAR2,
   p_itemname    VARCHAR2,
   p_dupnulchk   VARCHAR2 DEFAULT 'N'
)
   RETURN NUMBER
IS
   v_checkrec   NUMBER;
   v_curvalue   VARCHAR2 (1024);
   v_return     NUMBER          := 0;
BEGIN
   GO_BLOCK (p_blockname);
  
   v_checkrec := :SYSTEM.cursor_record;
   v_curvalue := NAME_IN (:SYSTEM.cursor_item);
   FIRST_RECORD;

   LOOP
      IF NVL (p_dupnulchk, 'N') = 'Y'
      THEN
         IF     :SYSTEM.cursor_record <> v_checkrec
            AND NVL (v_curvalue, '!@#$') =
                      NVL (NAME_IN (p_blockname || '.' || p_itemname), '!@#$')
         THEN
            v_return := 1;
            EXIT;
         END IF;
      ELSIF NVL (p_dupnulchk, 'N') = 'N'
      THEN
         IF     :SYSTEM.cursor_record <> v_checkrec
            AND v_curvalue IS NOT NULL
            AND NAME_IN (p_blockname || '.' || p_itemname) IS NOT NULL
            AND v_curvalue = NAME_IN (p_blockname || '.' || p_itemname)
         THEN
            v_return := 1;
            EXIT;
         END IF;
      END IF;

      EXIT WHEN :SYSTEM.LAST_RECORD = 'TRUE';
      NEXT_RECORD;
   END LOOP;

   GO_RECORD (v_checkrec);
   RETURN v_return;
END;
======================
BEGIN
   SET_FORM_PROPERTY (:SYSTEM.current_form, validation_unit, form_scope);

   IF ffn_duplicate_check ('CRQ3', 'ITEMCODE', 'N') = 1
   THEN
      SET_FORM_PROPERTY (:SYSTEM.current_form, validation_unit, item_scope);
      orbase.message_box
         ('E','Duplicate PMV Code Selected Or Entered. Please Check & Change The PMV Code...'
         );
      RAISE form_trigger_failure;
   ELSE
      SET_FORM_PROPERTY (:SYSTEM.current_form, validation_unit, item_scope);
   END IF;
END;

No comments:

Post a Comment