|
파라독스 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개를 효과적으로 다룰수가 없나요..
제가 왕초자라서 설명을 자세히 못드려서 지송합니다..
|