|
포스프로그램을 짜고 있는데. 스캐너에서 에디트로 읽어 들이면 8자리 코드 또는 13자리 코드를 어떻게 구분해서 읽어야 할지 잘 모르겠습니다.
에디트에서 읽어 들인 값을 임의 버퍼에 저장하여 버퍼사이즈를 측정하여 8자리냐 13자리냐로 해서 코딩을 했습니다. 근데 8자리는 읽는데 13자리는 8자리만 읽고 나머지는 자리는 다음 에디트로 넘어 갑니다.
고수님들 부탁드립니다...도와주셈...꾸벅..
여기 소스를 올립니다...
//==============================================================================
// 스캐너로 읽어 들여서 ITEM.DB를 검색한다.
//==============================================================================
void __fastcall TF_ASPM::Edit1Change(TObject *Sender)
{
char BUF[14];
strcpy(BUF,Edit1->Text.c_str()); //------ 에디트값을 버퍼로 불러들인다.
switch(strlen(BUF)) //------- 스위치문을 이용하여 8자리일 경우 13자리일경우를 나눠DB 를검색
{
case 8: //8자리일 경우
ITEM->Open();
ITEM->SetKey();
ITEM->FieldByName("A_CODE")->AsString = Edit1->Text.c_str();//상품코드
if(ITEM->GotoKey())
{
Edit2->Text = ITEM->FieldByName("A_NAME")->AsString;//상품명
Edit3->Text = ITEM->FieldByName("A_MIPG")->AsString;//매입가
Edit4->Text = ITEM->FieldByName("A_PANG")->AsString;//판매가
Edit5->Text = ITEM->FieldByName("A_GRCO")->AsString;//거래처코드
Edit6->Text = ITEM->FieldByName("A_BMCO")->AsString;//부문코드
if(ITEM->FieldByName("A_GSGU")->AsString == "0") //면과세구분
{
CB1->ItemIndex = 0;//과세선택
}
else if(ITEM->FieldByName("A_GSGU")->AsString == "1")
{
CB1->ItemIndex = 1;//면세선택
}
Edit7->Text = ITEM->FieldByName("A_JEGO")->AsString;//재고량
Edit3->SetFocus();
}
else
{
Edit2->SetFocus();
}
ITEM->Close();
break;
case 13: //13자리일 경우
ITEM->Open();
ITEM->SetKey();
ITEM->FieldByName("A_CODE")->AsString = Edit1->Text.c_str();
if(ITEM->GotoKey())
{
Edit2->Text = ITEM->FieldByName("A_NAME")->AsString;
Edit3->Text = ITEM->FieldByName("A_MIPG")->AsString;
Edit4->Text = ITEM->FieldByName("A_PANG")->AsString;
Edit5->Text = ITEM->FieldByName("A_GRCO")->AsString;
Edit6->Text = ITEM->FieldByName("A_BMCO")->AsString;
if(ITEM->FieldByName("A_GSGU")->AsString == "0")
{
CB1->ItemIndex = 0;
}
else if(ITEM->FieldByName("A_GSGU")->AsString == "1")
{
CB1->ItemIndex = 1;
}
Edit7->Text = ITEM->FieldByName("A_JEGO")->AsString;
Edit3->SetFocus();
}
else
{
Edit2->SetFocus();
}
ITEM->Close();
break;
}
}
|