안녕하세요..
어제 시간환산 로직 관련 글을 올렸었는데..
삽질한결과 아래 빨간색 부분처럼 구현은 했는데..
Toad로 DB접속하여 조회를 해보면 정상적으로 값이 나옵니다..
근데 꼭 아래 소스를 델파이에서 실행하면 그리드상에 값이 나오질 않네요..
SubStr 쓸때 뭐가 잘못된건가요?
스트링 그리드에 아래 속성들이 보여져야 되는데.. 저 빨간색으로 칠한 출근시간,퇴근시간 속성이
안보여지네요.. 아래 쿼리만으론 분석하기 어려우시겠지만.. 혹시라도 아신다면
지식 공유 부탁드립니다.
with CDS1,_SQL do begin
try
Active:=False;
ADD('SELECT');
ADD('A.GDATE 일자 ,');
ADD('A.SEQ 순번 ,');
ADD('a.PLAN_LEVEL||'':''||O.C0020 계획단계 ,');
ADD('a.EXE_LEVEL||'':''||P.C0020 실행단계 ,');
ADD('A.DEPT_CD 부서 ,');
ADD('A.DEPT_NM 부서명 ,');
ADD('C.GONG_CD||'':''||d.c0020 공정명 ,');
ADD('A.SNO 사번 ,');
ADD('A.KNAME 성명 ,');
//ADD('BB.TM_START 출근시간 ,');
//ADD('BB.TM_CLOSE 퇴근시간 ,');
ADD(' SUBSTR(REPLACE(REPLACE(AA.STD_TIME + BB.TM_START/24/60,'':'',''''),'' '',''''),1,17) 출근시간,');
ADD(' SUBSTR(REPLACE(REPLACE(AA.STD_TIME + BB.TM_CLOSE/24/60,'':'',''''),'' '',''''),11,4) 퇴근시간,');
ADD('BB.CD_WCODE 출근구분 ,');
ADD('A.PSTART_TIME 계획시간_from ,');
ADD('A.PEND_TIME 계획시간_to ,');
ADD('A.P_TIME 시간 ,');
ADD('A.WORK_CONT 작업내용 ,');
ADD('A.WORK_SU 목표량 ,');
ADD('A.SSTART_TIME 실작업_from ,');
ADD('A.SEND_TIME 실작업_TO ,');
ADD('A.S_TIME 시간 ,');
ADD('A.SWORK_CONT 달성내용 ,');
ADD('A.SWORK_MI 특이사유 ,');
ADD('A.WREG_MAN||'':''||E.C0030 계획작성 ,');
ADD('A.WCON_MAN||'':''||F.C0030 계획승인 ,');
ADD('A.GREG_MAN||'':''||G.C0030 계획관리작성 ,');
ADD('A.GREG_MAN2||'':''||H.C0030 계획관리검토 ,');
ADD('A.GCON_MAN||'':''||I.C0030 계획관리승인 ,');
ADD('A.REG_MAN 등록자 ,');
ADD('A.SFRIST_DATE 계획작성 ,');
ADD('A.SWRITE_DATE 계획승인 ,');
ADD('A.GFRIST_DATE 계획관리작성 ,');
ADD('A.GWRITE_DATE 계획관리검토 ,');
ADD('A.GCON_DATE 계획관리승인 , ');
ADD('A.WREG_RE_MAN||'':''||J.C0030 결과작성 ,');
ADD('A.WCON_RE_MAN||'':''||K.C0030 결과승인 ,');
ADD('A.GREG_RE_MAN||'':''||L.C0030 결과관리작성 ,');
ADD('A.GREG_RE_MAN2||'':''||M.C0030 결과관리검토 ,');
ADD('A.GCON_RE_MAN||'':''||N.C0030 결과관리승인 ,');
ADD('A.SFRIST_RE_DATE 결과작성 ,');
ADD('A.SWRITE_RE_DATE 결과승인 ,');
ADD('A.GFRIST_RE_DATE 결과관리작성 ,');
ADD('A.GWRITE_RE_DATE 결과관리검토 ,');
ADD('A.GCON_RE_DATE 결과관리승인,'''' 확인 ');
ADD('FROM HMU.GUNTAE_TBL A,');
ADD('(SELECT TRUNC(SYSDATE) STD_TIME FROM DUAL ) AA,');
ADD('(select DT_WORK,A.NO_EMP,A.TM_START,A.TM_CLOSE,A.CD_WCODE||'':''||B.NM_WCODE CD_WCODE');
ADD('from HR_WTMCALC@neoelink A,');
ADD('(select CD_WCODE,NM_WCODE from HR_WCODE@neoelink');
ADD(' WHERE CD_COMPANY =''8000'') B ');
ADD(' where');
ADD(' A.CD_WCODE = B.CD_WCODE(+) AND');
ADD(' A.DT_WORK between '+''''+R[1]+''''+' and '+''''+R[2]+''''+' ');
ADD(' ) BB ,GONGJONG_GUNTAE_TBL C,CMCD_T7130 D ,' );
ADD(' ERP2K_PWDS E,ERP2K_PWDS F,ERP2K_PWDS G,ERP2K_PWDS H,ERP2K_PWDS I,' );
ADD(' ERP2K_PWDS J,ERP2K_PWDS K,ERP2K_PWDS L,ERP2K_PWDS M,ERP2K_PWDS N,' );
ADD(' (SELECT C0030,C0020 FROM CMCD_T5141 WHERE C0010=''2R'' ) O, ' );
ADD(' (SELECT C0030,C0020 FROM CMCD_T5141 WHERE C0010=''2R'' ) P ');
ADD('WHERE');
ADD(' A.SNO =BB.NO_EMP(+) AND');
ADD(' A.GDATE =BB.DT_WORK(+) AND');
ADD(' A.WREG_MAN =E.C0010(+) AND');
ADD(' A.WCON_MAN =F.C0010(+) AND');
ADD(' A.GREG_MAN =G.C0010(+) AND');
ADD(' A.GREG_MAN2 =H.C0010(+) AND');
ADD(' A.GCON_MAN =I.C0010(+) AND');
ADD(' A.WREG_RE_MAN =J.C0010(+) AND');
ADD(' A.WCON_RE_MAN =K.C0010(+) AND');
ADD(' A.GREG_RE_MAN =L.C0010(+) AND');
ADD(' A.GREG_RE_MAN2 =M.C0010(+) AND');
ADD(' A.GCON_RE_MAN =N.C0010(+) AND');
ADD(' A.PLAN_LEVEL =O.C0030(+) AND');
ADD(' A.EXE_LEVEL =P.C0030(+) AND');
ADD(' A.SNO = C.SNO(+) AND c.gong_cd = d.c0010(+) AND ');
ADD(' A.GDATE between '+''''+R[1]+''''+' and '+''''+R[2]+''''+' ');
If R[3]<>'' then Add(' and A.DEPT_CD in '+R[3]);
If R[4]<>'' then Add(' and A.SNO in '+R[4]);
If R[5]<>'' then Add(' and d.c0010 in '+R[5]);
If R[6]<>'' then Add(' and A.PLAN_LEVEL = ' +''''+R[6]+'''');
If R[7]<>'' then Add(' and A.EXE_LEVEL = ' +''''+R[7]+'''');
IF R[8] = 'ALL' THEN //EXE 권한
BEGIN
//ALLL 조회
END ELSE IF R[8] = 'DEPT' THEN //SAVE AS 권한
BEGIN
Add(' and A.SNO IN (SELECT SNO FROM GONGJONG_GUNTAE_TBL WHERE DEPT_CD IN ') ;
Add(' (SELECT DEPT_CD FROM GONGJONG_GUNTAE_TBL WHERE SNO = '+''''+FMAIN.ID+''''+' ) ) ') ;
{ if (( Fmain.POPKIND = 'B' ) and (copy(R[9],1,2) = 'A3' ) OR (copy(R[9],1,2) = 'A5')
OR (R[9] = 'A604') ) THEN
Add(' and ( SUBSTR(A.DEPT_CD,1,2) IN ( ''A3'',''A5'') OR A.DEPT_CD = ''A604'' ) AND A.DEPT_CD <> ''A504'' ')
ELSE
Add(' and A.DEPT_CD = ' +''''+R[9]+'''');
//제조물류자제
}
END ELSE BEGIN
Add(' and A.DEPT_CD = ' +''''+R[9]+'''');
END;
ADD(' ORDER BY a.GDATE,A.DEPT_CD, C.GONG_CD,A.P_TIME ');
SQL.TEXT:=_SQL.Text;
// Clipboard.SetTextBuf(PChar(SQL.Text));
//SHOWMESSAGE(SQL.TEXT);
Active:=True;
QueryToGrid(Grid,ftnone,Fix);
Result := True;
except
if FindChildForm('f9999')= 1 then Application.CreateForm(Tf9999,f9999)
else f9999.BringToFront;
f9999.Errlog.Lines.Clear;
f9999.Errlog.lines.add('====='+Fmain.ID+' Error Generated '+Formatdatetime('YYYYMMDDHH:MM:SS',now)+'=====');
f9999.Errlog.lines.add(_SQL.Text);
f9999.Errlog.lines.add('===============================================================');
Result := False;
end;
Active:=False;
end;
_SQL.Free;
---------------------------------------------------------------------
안녕하세요.
오라클 DB에서..
480.. 520.. 1303.. 등의 형식으로 출/퇴근 시간이 저장되어지는데..
아래와 같이,
480 : 0800 (08시00분.. 60X8)
520 : 0840 (08시40분.. 60X8 = 480..8시 + 520-480=40분)
1303 : 2143 (21시43분)
YYMM 의 형식으로 조회(SELECT)를 해와야 하는데.. 난감하네요..
답변 부탁드립니다. (__)
해당 쿼리는 정상적으로 실행되고 다른 데이터들은 그리드에 뿌려진다면..
QueryToGrid(Grid,ftnone,Fix);
이 함수 안에서 뭔가가 빠져 있지 않을까 하는 생각이 드는군요