|
ITEM->Open();
ITEM->First();
for(cnt = 0 ; cnt < ITEM->RecordCount ; cnt++)
{
if(ITEM->FieldByName("FLAG1")->AsString == "1") //실행부;
else if(ITEM->FieldByName("FLAG1")->AsString == NULL) ITEM->Next();
else ShowMessage("입력번호가 틀립니다");
}
ITEM->Close();
위 코드가 실험하신 코드 그대로라면 논리오류가 있는 것같습니다.
레코드 포인터가 NULL일때만 이동함으로,
참의 경우에는 같은 레코드만 레코드 수만큼 검사하고 말겠군요.
아래처럼 바꾸어보시쬬.
ITEM->Open();
ITEM->First();
for(cnt = 0 ; cnt < ITEM->RecordCount ; cnt++)
if(ITEM->FieldByName("FLAG1")->AsString == "1") //실행부;
else if(ITEM->FieldByName("FLAG1")->AsString == NULL); // skip
else ShowMessage("입력번호가 틀립니다");
ITEM->Next(); // 한번돌고 레크드 이동시키고...
}
ITEM->Close();
시후 님이 쓰신 글 :
: db는 파라독스를 섰구요..테이블에는 99개의 CODE값을 가지고 있고요..FLAG1,FLAG2가 있습니다.
: CODE값 중에서 FLAG1에 1값이 있으면 아래의 실행부를 실행하구요..NULL이면 레코드카운트를 이동하고요..이것도 저것도 아니면 메세지를 띄울려구 하는데..
:
: ITEM->Open();
: ITEM->First();
:
: for(cnt = 0 ; cnt < ITEM->RecordCount ; cnt++)
: {
: if(ITEM->FieldByName("FLAG1")->AsString == "1") //실행부;
: else if(ITEM->FieldByName("FLAG1")->AsString == NULL) ITEM->Next();
: else ShowMessage("입력번호가 틀립니다");
: }
: ITEM->Close();
:
: 대충 이런 형태인데..카운트가 99개니깐 FLAG1이 NULL값이면 이게 레코드카운트를 다 돌리고 기냥
: 빠져 버리걸랑요..카운트 다 돌고 값이 없으면 ShowMessage를 보여야 하는데..이건 암만 생각해도
: 루틴이 생각이 안나네요...
: 매일 열분 고수님들을 괴롭혀서 지송합니다..
:
|