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
[15546] 파라독스 DB에서 복합키에 대한 질문입니다.
시후 [] 1069 읽음    2002-02-16 11:42
파라독스 DB로 테이블을 만들었는데요..
프라이머리 키를 하나만 둘수가 없어서 3개를 뒀거든요..
그러니깐

문자형 10자리 DATE     (날짜)
숫자형 10자리 RECEIPT  (영수넘버)
숫자형 10자리 COUNT    (영수넘버 카운트)

이렇게 해서 프라이머리 키를 잡았거든요..

TLOG->Open();
TLOG->First();

  if(TLOG->Bof == TLOG->Eof)
  {
     for(int cnt = 0 ; cnt < SG1->RowCount ; cnt++)
     {
        TLOG->Append();
        // 실행 부분 ...
     }
  }
  else
  {
     TLOG->Last();
     strcpy(RECEIPT,TLOG->FieldByName("RECEIPT")->AsString.c_str()); // 디비에서 영수넘버
     TLOG->First();                                                  // 마지막 번호를 가져옴

     while(!TLOG->Eof)
     {
        ptr1 = strstr(TLOG->FieldByName("ADJUST")->AsString.c_str(),"1"); // 플래그 값
                                                                         
        if(ptr1 != NULL) TLOG->Next();
        else
        {
           strcpy(BUF1,DATE->Caption.c_str()); 임의 라벨에 날짜(프라이머리키)를 저장한것
           strcpy(BUF2,PL_9->Caption.c_str());
           strcpy(BUF3,PL_11->Caption.c_str());

           ptr2 = strstr(F_DM->TLOG->FieldByName("DATE" )->AsString.c_str(),BUF1);
           ptr3 = strstr(F_DM->TLOG->FieldByName("HOLE" )->AsString.c_str(),BUF2);
           ptr4 = strstr(F_DM->TLOG->FieldByName("TABLE")->AsString.c_str(),BUF3);

           for(int cnt1 = 0 ; cnt1 < SG1->RowCount ; cnt1++)
           {
              if(ptr2 != NULL && ptr3 != NULL && ptr4 != NULL)
              {
                  F_DM->TLOG->SetKey();
                  // 임의 라벨에 영수 넘버(프라이머리키)를 저장한것
                  F_DM->TLOG->FieldByName("RECEIPT")->AsString = BILL->Caption.c_str();

                  if(F_DM->TLOG->GotoKey())
                  {
                      F_DM->TLOG->Edit();
                      // 실행 부분....
                  }
                  else
                  {
                      F_DM->TLOG->Append();
                      // 실행 부분 ...
                  }
               }
           }
       }
    }
    F_DM->TLOG->Post();
    F_DM->TLOG->ApplyUpdates();
    F_DM->TLOG->CommitUpdates();
    F_DM->TLOG->Refresh();
    F_DM->TLOG->Close();



설명하기가 꽤 까다롭네..쩝
암튼 디비에는

날짜      영수넘버 영수넘버카운트
20020216     1      1
20020216     1      2
20020216     1      3
요런 식으로 값이 저장됩니다. 값을 저장할때 동일 값이 있으면 Edit()를 해야하고
동일한 값은 있으나 새로운 값이 추가되어 있을때는 Append()를 해야 하걸랑요..
근데 분명 동일 값이 있는데 Append()로 가버리거든요..
프라이머리 키 3개를 효과적으로 다룰수가 없나요..
제가 왕초자라서 설명을 자세히 못드려서 지송합니다..

+ -

관련 글 리스트
15546 파라독스 DB에서 복합키에 대한 질문입니다. 시후 1069 2002/02/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.