Q&A

  • DBGrid 에서 Row Change시..문제
프로그램을 하다 한가지 문제점이 걸렸습니다!

사용환경 Delphi 6  OS : XP

사용 Component : InforPower DB Grid (wwDBGrid) ..

wwDBGrid에 데이터를 조회해서
뿌려준뒤 RowChange 라는 이벤트에서 라인이 바낄때마다 Sub Data를
읽어 오는데 그냥 키보드 DOWN KEY를 한번씩 누르면 정상적으로 데이터를
가져옵니다!

그러나 다운키를 계속 누르고 있으면 마지막 위치한 레코드의 정보를 가지고
SUB DATA를 가져와야하는데 마지막이 아닌 시작지점에서 3~4번째 데이터를 뿌려줍니다!

아래 소스에서 SetVariable('p_CODGBN', dxMemData_Head['CODDET']);
부분에서 Key 값을 넘겨주는 부분과 레코드수를 가져오는 i_PCnt를 체크해본결과 다운키를 계속누르고 있을경우 그동안 넘어간 CODDET의 값이
순서되로 조회되는것이 아니라 LIFO 로 되더군여!

메모리쪽에서 그런것 같은데 이경우를 FIFO로 바꿀수는 없을까요?

쓰고보니 두서가 없네요! 아무튼 요지는 DOWN키를 계속 누르고 있을때
Row가 Change되면서 순차적으로 Sub Data를 가져와야 하는데
그렇지 못하다는 것입니다!

with OracleQuery_Main do
     begin
       SQL.Clear;
       SQL.Text := 'BEGIN                                      '+#13+
                   '  CC05010_PKG.Select_Record_B(:p_CODGBN,   '+#13+
                   '                              :p_CNT,      '+#13+
                   '                              :p_t_CODDET, '+#13+
                   '                              :p_t_CODHNM, '+#13+
                   '                              :p_t_CODENM, '+#13+
                   '                              :p_t_ALTCD1, '+#13+
                   '                              :p_t_ALTCD2, '+#13+
                   '                              :p_t_USEDGU, '+#13+
                   '                              :p_TAG,      '+#13+
                   '                              :p_ERRCD,    '+#13+
                   '                              :p_ERRDS);   '+#13+
                   'END;                                       ';

       //변수타입 선언
       DeleteVariables;
       DeclareVariable('p_CNT',       otInteger);
       DeclareVariable('p_CODGBN',    otString);
       DeclareVariable('p_t_CODDET',  otString);
       DeclareVariable('p_t_CODHNM',  otString);
       DeclareVariable('p_t_CODENM',  otString);
       DeclareVariable('p_t_ALTCD1',  otString);
       DeclareVariable('p_t_ALTCD2',  otString);
       DeclareVariable('p_t_USEDGU',  otString);
       DeclareVariable('p_TAG',       otInteger);
       DeclareVariable('p_ERRCD',     otString);
       DeclareVariable('p_ERRDS',     otString);

       //PL/SQL Table Size Max값 & String Size 정의
       DimPLSQLTable('p_t_CODDET',    1000, 20);
       DimPLSQLTable('p_t_CODHNM',    1000, 40);
       DimPLSQLTable('p_t_CODENM',    1000, 40);
       DimPLSQLTable('p_t_ALTCD1',    1000, 20);
       DimPLSQLTable('p_t_ALTCD2',    1000, 20);
       DimPLSQLTable('p_t_USEDGU',    1000, 01);

       //Package와 연동되는 변수에 조회조건값 Set
       SetVariable('p_CODGBN', dxMemData_Head['CODDET']);
       Execute;
       I_pCnt    := GetVariable('p_CNT');
       v_CODDET  := GetVariable('p_t_CODDET');
       v_CODHNM  := GetVariable('p_t_CODHNM');
       v_CODENM  := GetVariable('p_t_CODENM');
       v_ALTCD1  := GetVariable('p_t_ALTCD1');
       v_ALTCD2  := GetVariable('p_t_ALTCD2');
       v_USEDGU  := GetVariable('p_t_USEDGU');
       s_ErrCd   := GetVariable('p_ErrCd');
       s_ErrDs   := GetVariable('p_ErrDs');

       Close;

     end;

0  COMMENTS