Q&A

  • 정말 초보적인 질문..데이타가 저장이 안돼요..T.T
a라는 테이블에서 데이타를 가져와 b라는 테이블에 데이타를 저장하는 내용입니다.

그런데 어디가 잘못된건지 데이타는 검색해서 가져오는데 저장을 하지 못하는군요..



오늘 아침부터 몇시간째 헤메고 있는지 몰겠습니다..

아래에 소스가 있으니 보시고 꼭좀 답변을 부탁드리겠습니다.



procedure Tfshp_req1.BitBtn2Click(Sender: TObject);

var

Row,RowCnt,ChkCnt: Integer;

Inv_No: String;

I_O_CHK,S_A_CHK: String;

SHIPPER,OTH_CODE,OTH_NAME,YKM_GUBUN,USD,AMOUNT_W,AMOUNT_V,AMOUNT_U: String;

Imsi_Vat: Double;

begin

ChkCnt := 0;

RowCnt := sg_hfrt.RowCount;

for Row := 1 to RowCnt - 1 do

begin

if sg_hfrt.Cells[0, Row] = '*' then

begin

Inv_No := sg_hfrt.Cells[3, Row];

I_O_CHK := sg_hfrt.Cells[9, Row];

S_A_CHK := sg_hfrt.Cells[10, Row];

Inc(ChkCnt);

with qr_inv_mst do

begin

Active := False;

if S_A_CHK = 'S' then

begin

if I_O_CHK = 'O' then

begin

Sql.Clear;

Sql.Add('Select * From SEA_HFRT A,

OTH_CHG_MST B ');

Sql.Add(' Where A.INV_NO =''' + Inv_No

+ ''' ');

Sql.Add(' And A.OTH_CHG =

B.OTHER_CODE ');

Open;

end; // OUT BOUND인 경우

if I_O_CHK = 'I' then

begin

Sql.Clear;

Sql.Add('Select * From SEA_I_HFRT A,

OTH_CHG_MST B ');

Sql.Add(' Where A.INV_NO =''' + Inv_No

+ ''' ');

Sql.Add(' And A.OTH_CHG =

B.OTHER_CODE ');

Open;

end; // IN BOUND인 경우

end; // 여긴 해운일 경우

if S_A_CHK = 'A' then

begin

if I_O_CHK = 'O' then

begin

Sql.Clear;

Sql.Add('Select * From ilogix_air.SEA_HFRT A,

OTH_CHG_MST B');

Sql.Add(' Where A.INV_NO =''' + Inv_No

+ ''' ');

Sql.Add(' And A.OTH_CHG =

B.OTHER_CODE ');

Open;

end; // OUT BOUND인 경우

if I_O_CHK = 'I' then

begin

Sql.Clear;

Sql.Add('Select * From ilogix_air.SEA_I_HFRT A,

OTH_CHG_MST B');

Sql.Add(' Where A.INV_NO =''' + Inv_No

+ ''' ');

Sql.Add(' And A.OTH_CHG =

B.OTHER_CODE ');

Open;

end; // IN BOUND인 경우

end; // 여긴 항공일 경우

First;

while Not Eof do

begin

SHIPPER := FieldByName('BILL_TO').AsString;

OTH_CODE := FieldByName('OTH_CHG').AsString;

OTH_NAME := FieldByName('NAME').AsString;

YKM_GUBUN := FieldByName('VAT').AsString;

USD := FieldByName('CURRENCY_OTH').AsString;

AMOUNT_W := FieldByName('AMOUNT_W').AsString;

if YKM_GUBUN = '2' then

begin

Imsi_Vat := StrToFloat(AMOUNT_W) / 10;

Imsi_Vat := Trunc(Imsi_Vat);

AMOUNT_V := FloatToStr(Imsi_Vat);

end else

begin

AMOUNT_V := '0';

end;

AMOUNT_U := FieldByName('AMOUNT_U').AsString;

Next;

with qr_imsi_tax do

begin

Active := False;

Sql.Clear;

Sql.Add('Insert Into IMSI_TAX_TOT');

Sql.Add('(SHIPPER,OTH_CODE,OTH_NAME,YKM_GUBUN,USD,AMOUNT_W,AMOUNT_V,AMOUNT_S)');

Sql.Add('Values(:SHIP,:CODE,:NAME,:GUBUN,:USD1,:ACC_W,:ACC_V,:ACC_U)');

// Sql.Add(' ');

ParamByName('SHIP').AsString := SHIPPER;

ParamByName('CODE').AsString := OTH_CODE;

ParamByName('NAME').AsString := OTH_NAME;

ParamByName('GUBUN').AsString := YKM_GUBUN;

ParamByName('USD1').AsString := USD;

ParamByName('ACC_W').AsString := AMOUNT_W;

ParamByName('ACC_V').AsString := AMOUNT_V;

ParamByName('ACC_U').AsString := AMOUNT_U;

try

Screen.Cursor := crHourGlass;

ExecSql;

Screen.Cursor := crDefault;

except

on E: Exception do

begin

Screen.Cursor := crDefault;

if UpperCase(Copy(E.Message,1,13)) = UpperCase('Key violation') then

Application.MessageBox(pchar('프로그램에 이상이 있습니다.'),'저장오류',MB_OK + MB_ICONSTOP)

else Application.MessageBox(pchar('오류가 발생하였습니다!!' + #13#10 +

E.Message + #13#10 + IntToStr(E.HelpContext)),'데이타베이스오류',MB_OK + MB_ICONSTOP);

Exit;

end;

end;

end;

end; // 임시테이블에 데이타넣어주는곳

end;

end;

end;

end;

0  COMMENTS