|
안녕하십니까.
정성훈입니다.
qrData->First(); 로 읽어온 처음 자료를 처리하면서 엑세스에러가 나는 것 같군요.
데이터 테이블의 처음 자료를 바탕으로 처리부를 쫒아가 보시는 게 좋을듯합니다.
----------------------------------------------------------------------
작은 생각이 세상을 바꾼다. - 정성훈.해미 -
----------------------------------------------------------------------
무식장이 님이 쓰신 글 :
: 무식장이 님이 쓰신 글 :
: 이거 땜시 3일째 헤매고 있습니다.
: 근데 허무하게 해결되었네요. 이유는 모르겠습니다.
: for loop안에서 qrData->Next()의 위치를 옮겼더니 에러가 안나네요.
: 다른건 하나도 안고치고요.
: 이렇게요.
: .....
: str_linenum=qrData->Fields->FieldByName("Line_Num")->AsString;
: str_ordercode=qrData->FieldByName("Order_Code")->AsString;
: str_goodscode=qrData->FieldByName("Goods_Code")->AsString;
: str_dividecode=qrData->FieldByName("Divide_Code")->AsString;
: str_goodsprice=qrData->FieldByName("Goods_Price")->AsString;
: str_goodsvalue=qrData->FieldByName("Goods_Value")->AsString;
: str_price=qrData->FieldByName("Price")->AsString;
: str_goodstax=qrData->FieldByName("Goods_TAX")->AsString;
: str_totalprice=qrData->FieldByName("Total_Price")->AsString;
: str_pv=qrData->FieldByName("PV")->AsString;
: str_bv=qrData->FieldByName("BV")->AsString;
: str_canceltype=qrData->FieldByName("Cancel_Type")->AsString;
:
: //여기로 옮기니까 잘됩니다. 씨발
: qrData->Next();
:
: sprintf(.....
: 무슨 이유때문인지는 모르겠지만 제 실수 같지는 않거든요.
: 이유를 아시는 분 계시면 부디 알려주시기 바랍니다.
:
:
: : 무식장이 님이 쓰신 글 :
: : : sprintf(Order_Num,"%20s",qrData->FieldByName("Order_Code")->AsString.c_str());
: : :
: : : 멀쩡한 건데 계속 EAccess Violation 나네요.
: : :
: : : 어이가 없어서 에러나는 부분만 복사해다가 테스트 해보니 잘됩니다.
: : : 이상해서 sprintf를 strcpy로 바꿔서 해보니까 또 잘되고.
: : : 다시 sprintf로 고치니까 또 에러나길래 다시 strcpy로 바꾸니까 이번엔 EAccess Violation
: : : 나네요.
: : :
: : : 도대체 뭣 때문에 이럴까요. 고수분들의 지적바랍니다.
: :
: : 이거 진짜 골때리네요.
: :
: : 리플달아 주신 분 말대로 AnsiString 변수 선언하고 거기다 넣어서 그변수로
: : sprintf를 쓰니까 그부분은 에러가 안나는데 qrData->Next();에서 에러가 납니다.
: :
: : int dcnt=0;
: : AnsiString ddata;
: :
: : qrData->First();
: :
: : for(;!qrData->Eof;)
: : {
: : memset(Line_Num,0x00,sizeof(Line_Num));
: : memset(Order_Num,0x00,sizeof(Order_Num));
: : memset(Goods_Code,0x00,sizeof(Goods_Code));
: : memset(Divide_Code,0x00,sizeof(Divide_Code));
: : memset(Goods_Price,0x00,sizeof(Goods_Price));
: : memset(Goods_Value,0x00,sizeof(Goods_Value));
: : memset(Price,0x00,sizeof(Price));
: : memset(Goods_TAX,0x00,sizeof(Goods_TAX));
: : memset(Total_Price,0x00,sizeof(Total_Price));
: : memset(PV,0x00,sizeof(PV));
: : memset(BV,0x00,sizeof(BV));
: : memset(Cancel_Type,0x00,sizeof(Cancel_Type));
: :
: : str_linenum=qrData->Fields->FieldByName("Line_Num")->AsString;
: : str_ordercode=qrData->FieldByName("Order_Code")->AsString;
: : str_goodscode=qrData->FieldByName("Goods_Code")->AsString;
: : str_dividecode=qrData->FieldByName("Divide_Code")->AsString;
: : str_goodsprice=qrData->FieldByName("Goods_Price")->AsString;
: : str_goodsvalue=qrData->FieldByName("Goods_Value")->AsString;
: : str_price=qrData->FieldByName("Price")->AsString;
: : str_goodstax=qrData->FieldByName("Goods_TAX")->AsString;
: : str_totalprice=qrData->FieldByName("Total_Price")->AsString;
: : str_pv=qrData->FieldByName("PV")->AsString;
: : str_bv=qrData->FieldByName("BV")->AsString;
: : str_canceltype=qrData->FieldByName("Cancel_Type")->AsString;
: :
: : sprintf(Line_Num,"%4s",str_linenum.c_str());
: : sprintf(Order_Num,"%20s",str_ordercode.c_str());
: : sprintf(Goods_Code,"%10s",str_goodscode.c_str());
: : sprintf(Divide_Code,"%9s",str_dividecode.c_str());
: : sprintf(Goods_Price,"%11s",str_goodsprice.c_str());
: : sprintf(Goods_Value,"%4s",str_goodsvalue.c_str());
: : sprintf(Price,"%11s",str_price.c_str());
: : sprintf(Goods_TAX,"%11s",str_goodstax.c_str());
: : sprintf(Total_Price,"%11s",str_totalprice.c_str());
: : sprintf(PV,"%11s",str_pv.c_str());
: : sprintf(BV,"%11s",str_bv.c_str());
: : sprintf(Cancel_Type,"%1s",str_canceltype.c_str());
: :
: : ddata+=String(Line_Num)+String(Order_Num)+String(Goods_Code)
: : +String(Divide_Code)+String(Goods_Price)+String(Goods_Value)
: : +String(Price)+String(Goods_TAX)+String(Total_Price)+String(PV)
: : +String(BV)+String(Cancel_Type);
: :
: : qrData->Next(); <=여기서 Eaccess violation납니다.
: : ++dcnt;
: : }
|