2011-12-08 1 views
3

좋습니다 ... 그럼. APEX에는 시스템의 문서에 대한 데이터를 표시하는 대화식 보고서가 있습니다. 우리의 문서는 2 년마다 검토되어야하며, 다음에 검토되어야 할 날짜가 포함 된 열이 표에 있습니다. 날짜가 특정 기준에 도달하면 (예 : 날짜가 현재 날짜, 3 개월, 2, 1 등의 6 개월 이내 인 경우) 날짜가 포함 된 셀 또는 행의 다른 셀을 시각적으로 표시하려고합니다.Oracle APEX - 포함 된 값을 기준으로 대화식 보고서의 셀에서 조건부로 텍스트 색을 변경합니까?

필자가해야 할 일은 해당 셀의 값이나 같은 행의 다른 셀 값을 기반으로 특정 셀의 텍스트 (또는 배경)의 색을 변경하는 것입니다. sysdate와 셀에 포함 된 날짜 사이의 범위를 결정하기위한 계산을 수행하는 프로세스 나 함수가 필요할 것입니다 ... 페이지가로드 될 때 반드시 계산할 필요는 없지만 매일 또는 매주 프로세스를 계산하거나 뭔가 좋은 것입니다.

인간의 개입없이 매일 실행되는 프로세스 또는 트리거를 설정할 수 있습니까? 또한 앞으로 다가올 마감일에 관한 알림 전자 메일을 보내기 위해 동일한 기능을 사용해야 할 필요가 있습니다. (즉, 문서가 6 개월 이상 검토되어야 할 필요가있을 때 이메일은 3 개월, 2, 1 등으로 발송됩니다.)

답변

4

emp에서 hiredate를 사용한 예 : > 11000입니다. (sysdate-hiredate의 범위는 약 10k에서 12k 사이입니다.) 당신은 당신이 쿼리에 계산 필드를 사용할 수 있습니다, 또는 당신은 보고서에서 색상 행 2 개 동적 작업을해야합니다 당신이 어떤 과정을 통해 채워 하나

select empno, ename, job, mgr, hiredate, sal, comm, deptno, 
     trunc((trunc(sysdate)-hiredate)) to_colour_or_not 
    from emp 

을 :) 중요하지 않습니다 온로드 동작을하고, 후 새로 고침. 새로 고침을 건너 뛰면 부분 페이지 새로 고침으로 인해 페이지 매김 이후에 행이 색칠되지 않습니다.

동적 동작 하나

dynamic action: after refresh

참 조치 : 다른 열 색상을 조건으로 한 컬럼을 사용

After refresh: true action

$("td[headers='TO_COLOUR_OR_NOT']").each(function(){ 
alert($(this).text()); 
    if(parseInt($(this).text()) > 11000){ 
     $(this).css({"background-color":"red"}); 
    }; 
}); 

예 영역에서 리프레시 후 . 항상 당신이 테스트 한 것과 당신이 테스트 한 것을주의 깊게 사용하십시오! 예를 들어 hiredate 열은 날짜이므로 필요에 따라 날짜로 처리해야합니다. 더 많은주의 사항 : 만약 당신의 날짜 형식이 DD-MON-YYYY로 설정되어 있다면, 매월 (JAN = 1, DEC = 12) 매핑을해야 할 것입니다! 어쩌면 심지어이 열의 날짜 형식을 변경하는 옵션 ...

$("td[headers='HIREDATE']").each(function(){ 
    var i_date = $(this).text(); 
    //date format = MM/DD/YYYY 
    //be carefull with date formats. 
    //in my case, i know my date format and know it won't change 
    //my code is far from a complete parse of possible date values! 
    var dMonth = i_date.substring(0, 2), 
     dDay = i_date.substring(3, 5), 
     dYear = i_date.substring(6);  
    var d = new Date(dYear, dMonth, dDay, 0, 0, 0, 0); 

    if(d.getFullYear() <= 1981){ 
     //we are looping over TD elements. I want to colour the 
     //column ENAME in red when the condition is true for this row. 
     //so, $(this) = TD element we loop with. parent = TR element, 
     //then back to the children of the row 
     $(this).parent().children("td[headers='ENAME']").css({"background-color":"red"}); 
    }; 
}); 

두 번째 동적 작업입니다 : 부하에를

Dynamic action: Onload

로 진정한 액션이는 같은 코드를 사용 새로 고침을위한 진정한 액션.

JS로 원하는대로 할 수 있습니다. 원하는 셀을 지정하면됩니다. [headers='']을 사용하여 원하는 셀을 타겟팅하십시오 (jquery selectors). css() 대신 addClass를 사용할 수 있습니다. 원하는 경우 더 많이 사용하십시오.

마십시오 : IR에는 내장 된 마우스 오버 동작이 있습니다.이렇게하면 마우스 오버 동작이있을 때 색칠 된 셀이 색으로 표시되지 않습니다. 이 작업을 원하지 않으면 mouseover/mouseleave 이벤트에 대한 또 다른 동적 동작이 필요하며 필요한 셀을 대상으로 지정하십시오.

예약 된 작업 : DBMS_JOBS을 확인하십시오.

+0

값을 확인하고있는 행을 편집하려는 경우 (즉, 'TO_COLOUR_OR_NOT'행의 색을 지정할 수 있음)이 행을 확인하고 다른 행의 색을 확인하려면이 작업이 유용합니다. 행, 말에 hiredate, 가치에 따라 어떻게 할 것인가? – Spags

+0

나는 당신을 도울 내 대답에 약간의 코드를 추가했다. 주석은 충분히 크지 않을 것이다 :) 나는 거기 상태 : 날짜와 함께 carefull 수 있습니다! 또한 기존의 보고서를 사용하는 것도 유용 할 수 있습니다. 왜냐하면 숨겨진 열을 거기에두고 여전히 대상을 지정할 수 있기 때문입니다 (IR에서는 불가능 함). 이 방법을 사용하면 선택에서 일부 논리를 수행하고이를 숨겨진 열로 출력하고 자바 스크립트에서 값 확인을 제거 할 수 있습니다. 이는 값을 변환하는 데 큰 어려움이 될 수 있으며 종종 매우 적은 결과가 발생합니다 (몇 번이나 할 수 있습니까? 코드 재사용? 노력할만한 가치가 있습니까?) – Tom

+0

아 ... 당신 말이 맞아요. 원본 열이 숨겨져 있으면 작동하지 않습니다. 그것은 매우 불행한 일입니다. 'hiredate'와 sysdate 사이의 select 문에서 수행 한 것과 유사한 계산을 수행 할 수 있지만 동적 액션이 시작되는 자바 스크립트 표현식의 일부로 수행 할 수 있습니까? 역동적 인 행동이 hiredate에있을 것이고 두 날짜의 차이를 계산 한 다음 적절한 셀을 채색 할 것입니다. – Spags

4

대화 형 보고서에서, 당신은 또한 당신을 위해 속임수를 쓰는 REPORTS (HIGHLIGHTS)를 정의 할 수 있습니다.

은 버튼 동작 (팝업)에 다음 형식과 당신이 이름을 줄 수 포커싱에서 하이라이트

, 유형 (행 또는 셀), 배경 및 글자 색, 그리고 당신이하고자하는 열을 선택 운영자 및 표현. 강조 표시를 적용합니다 (EXPRESSION-s에 따라 두 개 이상의 색상 강조 표시가 필요할 때 여러 개의 강조/다른 이름으로 지정). 가장 중요한 필터와 함께 보고서 (첫 번째 주)로 저장하십시오.

기본 보고서를 정의한 후이를 기본 보고서로 사용할 수 있습니다. 일부 다른 보고서를 만들고 다른 필터와 함께 저장하지만 기본 보고서와 동일한 강조 표시를 사용하십시오.

재미있게 보내십시오.

관련 문제