좀긴소스인데 if문관련해서 문의좀드립니다... 0 0 1,219

by 정재교오라클 [PL/SQL] [2015.12.17 11:52:43]


 

해당 질문 해결하였습니다

exe_query호출할때 EXE_QUERY1_1(v_gage_dd,c_row,C1.CUST_NM,CALC2); 로 하여 처리하였습니다

-------------------------------------------------

안녕하세요 신입 전산인입니다 고민을하다하다 안되서 질문을 드려봅니다..

for문에서 데이터가

-첫번째

c1거래처 ㈜대구상회  v_cust null
c1날짜 20151216  v_gage_dd null

-두번째

c1거래처 ㈜대구상회  v_cust ㈜대구상회
c1날짜 20151216  v_gage_dd 20151216

-세번째

c1거래처 ㈜대구상회  v_cust ㈜대구상회
c1날짜 20151216  v_gage_dd 20151216

-네번째

c1거래처 ㈜대구상회  v_cust ㈜대구상회
c1날짜 20151217  v_gage_dd 20151216

순으로 데이터가 셀렉이되는데요

아래쪽에 문제1이라고 적힌 부분에 t_date에 날짜가 20151216이들어가야하는데 if문때문에20151217이 들어가고있습니다

방법이있을까요.... 여러방법으로 해보고 있지만 잘안되네요....


    IF NVL(V_GAGE_DD,'----') != C1.GAGE_DD OR NVL(V_CUST,'----') != C1.CUST_NM THEN
     --1)일 계-------------------------------------------------------------------------------
     --ALERT_MESSAGE(V_CUST||'-'||C1.CUST_NM);
     IF V_GAGE_DD IS NOT NULL AND NVL(V_CUST,'----') = C1.CUST_NM THEN        --일자틀릴경우에 일계하나더만들어주는 부분 일계중에 위부분임       
      SHEET0.SET_DATA(OBJ,01,C_ROW,'','일 계','');
      SHEET0.SET_SELECT(OBJ,01,C_ROW,05,C_ROW);
      SHEET0.SET_ALIGN(OBJ,7,0,2,0);
      SHEET0.SET_SELECT(OBJ,01,C_ROW,12,C_ROW);
      SHEET1.SET_BORDER(OBJ,1,-1,-1,-1,-1);
      --alert_message(c_row);
      CALC := 'SUM(F'||S_ROW||':F'||(C_ROW-1)||')';
      SHEET0.SET_TOTAL(OBJ,6,C_ROW,10,C_ROW,CALC,'#,##0'); 
      --EXE_QUERY1_1(C1.GAGE_DD2,c_row,C1.CUST_NM,CALC2);                              --17일짜 데이터가 들어감     
      EXE_QUERY1_1(T_DATE,c_row,C1.CUST_NM,CALC2);                              --문제1 
     -- SHEET0.SET_DATA(OBJ,11,C_ROW,CALC2,'','');    --감율
      C_ROW := SHEET0.FADD_ROW(OBJ, C_ROW, 1);    
      --한페이지에 출력할 갯수를 초과한 경우 페이지 스킵처리함.
      IF V_CNT != 0 AND (V_CNT MOD PAGE_COUNT) = 0 THEN
       SHEET0.SET_PAGE(OBJ,C_ROW,'R');                 --PAGE SKIP
      END IF;  
      S_ROW := C_ROW;  --일계 소계 시작행
     END IF;  
     
     --2)일계,거래처 계-----------------------------------------------------------------------16일짜 데이터가 들어감
     IF NVL(V_CUST,'----') != C1.CUST_NM  THEN     
      IF V_CUST IS NOT NULL THEN     
       --1)일계
       SHEET0.SET_DATA(OBJ,01,C_ROW,'','일 계1','');        ----------마지막 일계 만들어 주는 부분
       SHEET0.SET_SELECT(OBJ,01,C_ROW,05,C_ROW);
       SHEET0.SET_ALIGN(OBJ,7,0,2,0);
       SHEET0.SET_SELECT(OBJ,01,C_ROW,12,C_ROW);
       SHEET1.SET_BORDER(OBJ,1,-1,-1,-1,-1);
       CALC := 'SUM(F'||S_ROW||':F'||(C_ROW-1)||')';       
       SHEET0.SET_TOTAL(OBJ,6,C_ROW,10,C_ROW,CALC,'#,##0');     
       --EXE_QUERY1_1_1(C1.GAGE_DD2,c_row,C1.CUST_NM,CALC2);               
       EXE_QUERY1_1_1(T_DATE,c_row,C1.CUST_NM,CALC2);            --문제2   
       -- SHEET0.SET_DATA(OBJ,11,C_ROW,calc2,'','');    --총중량                   
       
       --EXE_QUERY1_1(C1.GAGE_DD,C1.CUST_NM,C_ROW);
       C_ROW := SHEET0.FADD_ROW(OBJ, C_ROW, 1);                               
       
       --한페이지에 출력할 갯수를 초과한 경우 페이지 스킵처리함.
       IF V_CNT != 0 AND (V_CNT MOD PAGE_COUNT) = 0 THEN
        SHEET0.SET_PAGE(OBJ,C_ROW,'R');                 --PAGE SKIP
       END IF;
       
              --PAGE SKIP 
            
       S_ROW  := C_ROW;    --일자계 시작행     
       S_ROW2 := C_ROW;    --거래처계 시작행 
       V_CNT  := C_ROW - S_ROW2;       --거래처건수
      END IF;       
     END IF;
          
     SHEET0.SET_DATA(OBJ,01,C_ROW,'',C1.GAGE_DD,'');  --계근일자 
     SHEET0.SET_DATA(OBJ,02,C_ROW,'',C1.CUST_NM,'');   --거래처
     
    
      
         END IF;
    
    --EXE_QUERY1_1(C1.GAGE_DD2,c_row,C1.CUST_NM,CALC2);               
    
    
    
    


         
    W_SAVE := C1.SUB_RT;        
    SHEET0.SET_DATA(OBJ,03,C_ROW,'',C1.GAGE_SEQ,'');    --번호
    SHEET0.SET_DATA(OBJ,04,C_ROW,'',C1.CAR_NO,'');      --차량번호    
    SHEET0.SET_DATA(OBJ,05,C_ROW,'',C1.ITEM_NM,'');     --품명
    SHEET0.SET_DATA(OBJ,06,C_ROW,C1.FULL_WGT,'','');    --총중량
    SHEET0.SET_DATA(OBJ,07,C_ROW,C1.EMPTY_WGT,'','');   --공차중량
    SHEET0.SET_DATA(OBJ,08,C_ROW,C1.REAL_WGT,'','');    --실중량
    SHEET0.SET_DATA(OBJ,09,C_ROW,C1.SUB_QTY,'','');     --감량
    SHEET0.SET_DATA(OBJ,10,C_ROW,C1.DEDUCT_WGT,'','');  --인수량
    SHEET0.SET_DATA(OBJ,11,C_ROW,'',W_SAVE||'%','');      --감률    
    --SHEET0.SET_DATA(OBJ,09,C_ROW,C1.SUB_RT,'','');      --감률
    --SHEET0.SET_DATA(OBJ,12,C_ROW,'',C1.IN_OUT_NM,'');   --입출
    V_CUST    := C1.CUST_NM;
    V_GAGE_DD := C1.GAGE_DD;
    V_CNT     := V_CNT + 1;
  END LOOP;

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입