Oracle - Forms (20) 썸네일형 리스트형 Oracle Forms - 문법 - PRE-QUERY 1. ⇒ BLOCK XXPO_PRICE_PO_LINES_V의 EVENT에 :SYSTEM.TRIGGER_ITEM이 적용된 부분을 PRE-QUERY TRIGGER를 적용 시킨다. PRE-QUERY TRIGGER는 QUERY PROCESSING 수행 전에 수행되며 BLOCK LEVEL 이상에서 선언해 주어야 한다. 즉, 한번의 QUERY 로 10개의 레코드를 가져온다고 가정할 때, PRE-QUERY TIGGER는 QUERY 수행 전 1번 수행 된다. EX) PRE-QUERY TRIGGER에 적당한 SQL문을 입력함으로써 [조회 조건 입력] KEY를 눌렀을 때와 같은 제한적인 QUERY를 수행 가능하다. 2. XXPO_PRICE_PO_LINES_V의 SPEC에 BLOCK LEVEL에서 사용한 TRIGGER들을 .. Oracle Forms - 문법 - SET_BLOCK_PROPERTY APP_QUERY.APPEND('XXACO_RM_ACCOUNTING_SUMMARY_V', 'PERIOD_NAME BETWEEN :CTL_QUERY.PERIOD_NAME_F and :CTL_QUERY.PERIOD_NAME_T ORDER BY PERIOD_NAME DESC '); 빨간색 부분인 ORDER BY PERIOD_NAME DESC 가 문제였는데 다른 조건 없이 날짜 단위로 검색을 할 경우 문제가 없었지만 다른 조건들 SOURCE TYPE , INV TYPE 등이 들어갈 경우 쿼리 문에 문제가 생겨 데이터를 도출 할 수 없었다. 처음 시도한 해결 법은 APP_QUERY.APPEND를 맨 밑으로 보내고 돌리는 것이었지만 ora-00907: missing right parenthesis 발생하여 orde.. Oracle Forms - 문법 - Format Mask 사용법 Data가 숫자 일 경우 ERP에서는 오른쪽 정렬 그리고 사용자가 보기 편하게 콤마(,)를 찍어 줘야 한다. A. 오른쪽 정렬 하고 싶으면 해당 item의 Property Palette 들어감 Functional의 justification을 right로 설정 ====================== B. 콤마(,) 찍고 싶으면 그룹화(천 단위) 구분 기호의 배치를 결정합니다. 사용되는 그룹화 구분 기호는 템플릿 로케일에 따라 런타임에 결정됩니다. 예: 형식 마스크: 9G999D99 데이터: 1234.56 영어 로케일용 표시: 1,234.56 독일어 로케일용 표시: 1.234,56 참조 : https://docs.oracle.com/middleware/12212/bip/BIPRD/GUID-7BD3C665-.. Oracle Forms - 문법 - USING SYSTEM VARIABLES (시스템 변수 사용) 내장 프로시저 및 함수 외에도 Oracle Forms는 폼의 런타임 조건에 대한 정보를 제공하는 내장 시스템 변수를 제공합니다. 이러한 변수는 기본 제공 프로시저와 마찬가지로 트리거에서 양식의 현재 조건을 진단하고 조치하는 데 사용할 수 있습니다. Message_LEVEL, DATE_THRESHOLD, EFFECTIVE_DATE 및 SUPPRES_WORKING을 제외하고 시스템 변수는 보편적으로 읽기 전용입니다. 시스템 변수에는 다음이 포함됩니다. SYSTEM.BLOCK_STATUS STSTEM.COORDINATION_OPERATION SYSTEM.CURRENT_BLOCK SYSTEM.CURRENT_DATETIME SYSTEM.CURRENT_ITEM SYSTEM.CURSOR_BLOCK SYSTEM.CUR.. Oracle Forms - 문법 - TRIGGER를 PROCEDURE화 SPEC 부분에 각 TRIGGER들을 PROCEDURE 해서 BLOCK레벨에서 어떤 TRIGGER들을 썼는지 좀 더 보기 쉽게 표현 2. Body 부분에 IF ELSIF 각 TRIGGER들을 P_TRIGGER_NAME에 매개변수로 받아서 분기를 나눴다. Oracle Forms - 문법 - APP_ORDER_BY.APPEND ex) APP_ORDER_BY.APPEND('XXPO_PRICE_PO_LINES_V', 'LINE_NUM'); APP_ORDER_BY.APPEND('XXPO_PRICE_PO_LINES_V', 'LINE_NUM ASC'); ⇒ order by LINE_NUM 이 생김 order by LINE_NUM ASC 생김 ★반드시 RESET해줘야함 APP_QUERY.RESET('XXPO_PRICE_PO_LINES_V'); 으로 지워지지 않는다. EX) APP_ORDER_BY.RESET('XXPO_PRICE_PO_LINES_V') Oracle Forms - 문법 - APP_QUERY.RESET EX) APP_QUERY.RESET('B_MAIN'); ⇒ 조회 할 대상 블럭의 WHERE Clause 값을 초기화 합니다. 만약 초기화 하지 않고 계속적으로 조회를 하면 이전 조건 값들이 덧불여지는 결과가 나오게 됩니다. +추가 정렬도 마찬가지로 APP_ORDER_BY.RESET으로 ORDER BY CLAUSE 값을 초기화 합니다. 이전 1 2 3 다음