Q&A

  • 스트링그리드(StringGrid)의 내용을 원격에 있는 오라클 테이블로 저장하고 싶어요
우선 제가 델파이는 상당한 초급자임을 먼저 감안해 주세요~.~
제가 궁금한 것은 어떤 엑셀자료를 DBGrid가 아닌 StringGrid에 뿌렸습니다.

그런 후 StringGrid의 자료를 저장버튼을 클릭하면 원격지 오라클 DB의 특정
테이블에 insert 하려고 합니다.

어떻게 해야 하나요?
가능한한 구체적으로 설명을 해주시면 감사하겠습니다.

책을 찾아봐도 그런 내용은 잘 못 찾겠더라구요...
너무 초보적인 문제라서 그런지~~

가르침을 주세요..

아래는 제가 만든 코드입니다.

procedure TForm1.Button2Click(Sender: TObject);
var
Row        : integer;
begin
try
   if MessageDlg('추가하시겠습니까?', mtwarning,[mbYes, mbNo], 0) = mrYes then   begin
    For Row := 1 to StringGrid1.RowCount-1  do  begin
     with Query1 do
       begin
       SQL.Clear;
       sql.BeginUpdate;
       sql.Add('Insert into Addr(no, zip1, zip2, Addr1, Add2, Dong)');
       sql.Add('values (:no, :zip1, :zip2, :Addr1, :Add2, :Dong)');
       sql.EndUpdate;
       parambyname('no').asinteger := strtoint(stringgrid1.Cells[0, Row]);
       parambyname('zip1').asstring := stringgrid1.Cells[1, Row];
       parambyname('zip2').asstring := stringgrid1.Cells[2, Row];
       parambyname('Addr1').asstring := stringgrid1.Cells[3, Row];
       parambyname('Add2').asstring := stringgrid1.Cells[4, Row];
       parambyname('Dong').asstring := stringgrid1.Cells[5, Row];
       Prepare;
       Query1.OpenDatabase;
       EXecSQL;
       end;  // with end
     end;  // For end
     Query1.Close;
     Query1.SQL.Clear;
     showmessage('성공!!');
   end;   // if end
     showmessage('취소하셨습니다.!!');
except
    showmessage('추가할 수 없습니다.');
end;
end;

오라클클라이언트 설치되어있고 DbGrid로 데이타 가져오는건 잘 됩니다.
그런데 위 방식으로 하면 에러가 나는군요
1  COMMENTS
  • Profile
    이영주 2006.08.24 19:36
    아래처럼 바꿔 보십시오.

    <!--CodeS-->
    try
       if MessageDlg('추가하시겠습니까?', mtwarning,[mbYes, mbNo], 0) = mrYes then   begin
          with Query1 do begin
             SQL.Clear;
             sql.Add('Insert into Addr(no, zip1, zip2, Addr1, Add2, Dong)');
             sql.Add('values (:no, :zip1, :zip2, :Addr1, :Add2, :Dong)');
          end;
          Query1.Prepare;
          For Row := 1 to StringGrid1.RowCount-1  do  begin
            with Query1 do begin
              parambyname('no').asinteger := strtoint(stringgrid1.Cells[0, Row]);
              parambyname('zip1').asstring := stringgrid1.Cells[1, Row];
              parambyname('zip2').asstring := stringgrid1.Cells[2, Row];
              parambyname('Addr1').asstring := stringgrid1.Cells[3, Row];
              parambyname('Add2').asstring := stringgrid1.Cells[4, Row];
              parambyname('Dong').asstring := stringgrid1.Cells[5, Row];
              EXecSQL;
           end;  
         end;  
         Query1.UnPrepare;
         showmessage('성공!!');
      end
      else
        showmessage('취소하셨습니다.!!');
    except
       showmessage('추가할 수 없습니다.');
    end;
    <!--CodeE-->