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;