맨날 눈팅만 하다가 처음으로 질문 드립니다.
많은 도움 주시면 감사하겠습니다.
우선 로직은 엑셀로 송신받은 파일을 불러와서 스트링그리드에 뿌려주고
스트링그리드의 값을 Oracle 특정테이블에 저장을 해주는 것입니다.
엑셀을 스트링 그리드에 뿌려주는 부분은 눈팅을 통해서 오류없이 해결이 되었습니다.
그런데 스트링그리드에서 디비로 가는 과정이 문제가 있는듯 합니다.
실행시 저장까지 아무런 오류가 없는데 데이터는 Insert가 되지 않습니다.
아래는 코드인데요..
저장버튼 클릭하면 "저장이 되었습니다."하는 메시지를 보여주는데
실제로 테이블엔 아무런 값이 들어가질 안습니다.
저장버튼 클릭시
var
Row, Col : integer;
cnt : integer;
Coli : integer;
begin
Mcnt := 0;
coli := 5;
StringGrid1.RowCount := cnt;
StringGrid1.ColCount := coli;
For Row := 1 to cnt do
begin
For Col := 1 to coli do
begin
with query1 do
begin
Close;
Sql.Clear;
ShowMessage('저장하시겠습니까?');
//A의 경우이면
if combobox1.ItemIndex = 0 then
Sql.Add('Insert into table1(FJumnum, FMonth, FSugemdate, FSugemamt, Fseqno)')
else
//B의 경우이면
Sql.Add('Insert into table2(FJumnum, FMonth, FSugemdate, FSugemamt, Fseqno) ');
Sql.Add('values (:jumno, :fmonth, :fdate, :famt, :fseq ) ');
For coli := 1 to cnt-1 do
begin
parambyname('jumno').asstring := stringgrid1.Cells[coli, MRow];
parambyname('fmonth').asstring := stringgrid1.Cells[coli, MRow];
parambyname('fdate').asdate := strtodate(stringgrid1.Cells[coli, Mrow]);
parambyname('famt').asinteger := strtoint(stringgrid1.Cells[coli, Mrow]);
parambyname('fseq').asstring := stringgrid1.Cells[coli, MRow];
cnt := cnt + 1;
Execsql;
end;
end;
end;
end;
ShowMessage('저장이 완료 되었습니다.');
코드가 좀 허접스럽긴 합니다.
참고로 테이블에 FSugemdate라는 필드는 오라클의 Date타입입니다.
FJumnum, FMonth, Fseqno는 Varchar타입이구요.
FSugemamt는 Numer타입입니다.
도움부탁드립니다.
그럼 즐거운 하루 되십시오.
var
Row, Col : integer;
cnt : integer;
Coli : integer;
sql1,sql2,sql_r : string;
begin
Mcnt := 0;
coli := 5;
StringGrid1.RowCount := cnt;
StringGrid1.ColCount := coli;
For Row := 1 to cnt do
begin
with query1 do
begin
Close;
Sql.Clear;
ShowMessage('저장하시겠습니까?');
//A의 경우이면
sql1 := 'Insert into table1(FJumnum, FMonth, FSugemdate, FSugemamt, Fseqno)';
sql2 := 'Insert into table2(FJumnum, FMonth, FSugemdate, FSugemamt, Fseqno)';
if combobox1.ItemIndex = 0 then
sql_r := sql1
else
//B의 경우이면
Sql_r := sql2;
sql_r := sql_r + 'values (:jumno, :fmonth, :fdate, :famt, :fseq )';
Sql.Add(sql);
parambyname('jumno').asstring := stringgrid1.Cells[1, Row];
parambyname('fmonth').asstring := stringgrid1.Cells[2, Row];
parambyname('fdate').asdate := strtodate(stringgrid1.Cells[3, Row]);
parambyname('famt').asinteger := strtoint(stringgrid1.Cells[4, Row]);
parambyname('fseq').asstring := stringgrid1.Cells[5, Row];
showMessage(sql);
Execsql;
end;
end;
ShowMessage('저장이 완료 되었습니다.');