C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[45142] Re:Re:Re:Re:Re:Re:도와주세용~~
kurt [] 715 읽음    2006-05-29 19:35
매번 친절한 답변 고맙습니다...
바로 그 의문사항이 문제입니다.
동일한 REG_SEQ값이 두개이상 존재합니다.
그러기에 동일한 REG_SEQ값 전의 LINK_ID와 후의 LINK_ID 값을 뽑아가며 돌리기가 난감하다는...
돌면서 유일한 REG_SEQ값도 있고...
매번 감사합니다... 달리 생각을 해야하는건지..


장성호 님이 쓰신 글 :
: 제가 제대로 이해했는지 모르겠는데요
:
: 그러니까  "REG_SEQ" 만 이전값과 같은지 비교하고
:   if  같으면  :  이전 LinkID와 현재 LinkID를 같이 저장한다구요?
:
: 의문사항 있습니다.
: 만약 "REG_SEQ"가 2개이상  똑같은것이 있는경우는 어떻게 하죠?
:
: 아래 제가 이해한데로 샘플 코딩해봅니다.
:
: 이 코드는 DB에서 REG_SEQ 로 order by 해서 query한경우입니다
: 만약 db에서 order by도 지원하지 않는다면
: STL의 vector 나 list 같은것을 이용해서 sorting한뒤에
: 아래와 같은 로직으로 돌리면 되겠네요
:
:
:  String sRegSeq0,sRegSeq1;
:  String sLink0,sLink1;

:  for(i = 0; i < itCount; i++)
:  {    
:          sRegSeq1 = m_DAO->t_DBA->GetField("REG_SEQ");    //시퀀스 값
:          sLink1       = m_DAO->t_DBA->GetField("LINK_ID1");      // ID 값

:          if(sRegSeq1==sRegSeq0 )  //1. 이전 REG_SEQ 와 같은 경우
:           {
:               //A)  (이전에 똑같은 REG_SEQ에 해당하는 모든 LINK_ID가 저장됨)
:                sLink0=sLink0+","+sLink1;  //","로 구분함
:                Save(  sLink0 );               
:                Function1();//2)  해당함수 호출            
:             
:               //B) 만약 REG_SEQ 가 똑같은 경우 바로앞에 하나만 LINK_ID를 저장한다면
:               Save(sLink0,sLink1);
:               sLink0=sLink1;
:                Function1();   //2)  해당함수 호출            
:
:          }
:         else
:         {
:              sRegSeq0=sRegSeq1;
:              sLink0=sLink1;
:               Save(sLink0);//1)  save   sLink0            //---> 현재 LinkID만 저장됨
:               Function2(); //2)  해당함수 호출            
:         }
:          m_DAO->t_DBA->MoveRec(i);
:  }
:
:
:
: kurt 님이 쓰신 글 :
: : 장성호 님이 쓰신 글 :
: : : DB가 GroupBy가 안된다고요?
: : : 그럼 join도 기대하지 말아야 겠네요
: : :
: : : 그냥 query결과를 가지고 해야한다면
: : :
: : : 그냥 변수하나 만들어두고 이전 Record값과 계속 비교하는 로직이 가장 이해하기 쉽겠네요
: : :
: : :
: : : [방법1]
: : :
: : : 1. select 할때 order by REG_SEQ로 하세요
: : :        sql="select * from table_name order by REG_SEQ";
: : :
: : : 2.  이전 Record값을 저장할 변수를 하나 두고 계속 비교하는 방법입니다.
: : :
: : : String sRegSeq0,sRegSeq1;
: : : String sLink0,sLink1;
: : :
: : : for(i = 0; i < itCount; i++)
: : : {    
: : :         sRegSeq1 = m_DAO->t_DBA->GetField("REG_SEQ");    //시퀀스 값
: : :         sLink1       = m_DAO->t_DBA->GetField("LINK_ID1");      // ID 값
: : :
: : :         if((sRegSeq1!=sRegSeq0 ) && (sLink1!=sLink0)) //unique한경우를 찾는 비교문 ..
: : :        {
: : :             sRegSeq0=sRegSeq1;
: : :             sLink0=sLink1;
: : :             // REG_SEQ값이 다음 REG_SEQ값과 같은지 다른지 체크하여 각각 LINK_ID1을 저장해야 하는데??
: : :        }
: : :
: : :         m_DAO->t_DBA->MoveRec(i);
: : : }
: : : 
: : :
: : : //....
: : : if 구문이 님의 의도와 맞는지  잘모르겠습니다만 ..
: : : 위와같이 하는 방법이 일단 이해하기 쉽고 심플할 것 같네요
: : : 그런데 이정도는 님께서도 충분히 생각하실수 있으실것 같은데..
: : : 제 답이 엉뚱하다면  좀더 명확하게 질문 부탁드립니다.
: :
: : 제 질문이 모자랐나봅니다.
: : 루프문을 돌면서 REG_SEQ 값이 이전 값과 동일하다면 이전 REG_SEQ의 LINK_ID 값과 현재의 LINK_ID 값을 저장하여
: : 해당 함수를 호출/처리하고, 계속 루프를 돌면서 이전 REG_SEQ값과 현재의 REG_SEQ값이 틀리다면 현재의 REG_SEQ값에 해당하는 LINK_ID 를 저장하여 해당 함수를 호출/처리하는 로직입니다. 머리가 돌이 되어버린 느낌...ㅠㅠ

+ -

관련 글 리스트
45131 도와주세용~~ kurt 870 2006/05/29
45134     Re:도와주세용~~ 장성호 742 2006/05/29
45135         Re:Re:도와주세용~~ kurt 777 2006/05/29
45136             Re:Re:Re:도와주세용~~ 장성호 770 2006/05/29
45138                 Re:Re:Re:Re:도와주세용~~ kurt 771 2006/05/29
45141                     Re:Re:Re:Re:Re:도와주세용~~ 장성호 813 2006/05/29
45142                         Re:Re:Re:Re:Re:Re:도와주세용~~ kurt 715 2006/05/29
45144                             Re:Re:Re:Re:Re:Re:Re:도와주세용~~ 장성호 807 2006/05/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.