본문 바로가기

컴터/delphi

예제]엑셀로 DB 떨어뜨리기

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

unit mainForm2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, DB, DBTables, ExtCtrls, DBCtrls;

type
  TForm1 = class(TForm)
    Table1: TTable;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Button1: TButton;
    Button2: TButton;
    DBNavigator1: TDBNavigator;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  ComObj;

procedure TForm1.Button1Click(Sender: TObject);

var
  Excel : Variant;
  Loop, iRow : Integer;

begin
  Excel:=CreateOleObject('Excel.Application'); ///엑셀 컴포넌트를 불러들여라
  Excel.WorkBooks.Add; ///엑셀sheet 를 만들어라
  Excel.Visible:=True; ///엑셀이 보여라

  For Loop:=1 to Table1.FieldCount-2 do
    Excel.Cells[1, Loop].Formula:=Table1.Fields[Loop-1].FieldName;

  iRow := 1;
  Table1.First;
  Table1.DisableControls; ////루프돌기 전에 해당 table 접근을 막아라.
  try
    While Table1.Eof = False Do Begin
     iRow:=iRow+1;

     For Loop:=1 To Table1.FieldCount-2 do
       Excel.Cells[iRow, Loop].Formula:=Table1.Fields[Loop - 1].AsString;

      Table1.Next;
    end;
  finally
    Table1.EnableControls;    ////이제 풀어라..
  end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Table1.Insert;///레코드 추가

  try
    //Table1.Fields[0].AsInteger:=3;  /////배열로 필드에 숫자값 넣기
    Table1.FieldByName('Special No').AsInteger:=3;//////필드값으로 숫자값 넣기
    Table1.Post;////레코드 저장

  except ////error발생시 아래 실행(개발자에게만은 보여준다.)
    Table1.Cancel; //레코드 취소
  end;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Table1.Edit;///레코드 수정

  try
    //Table1.Fields[0].AsInteger:=3;  /////배열로 필드에 숫자값 넣기
    Table1.FieldByName('Special No').AsInteger:=3;//////필드값으로 숫자값 넣기
    Table1.Post;////레코드 저장

  except ////error발생시 아래 실행(개발자에게만은 보여준다.)
    Table1.Cancel; //레코드 취소
  end;
 
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
   if MessageDlg('정말지울꺼얌?', mtError, [mbYes, mbNo], 0) = mrYes
   then    Table1.Delete;
end;         ///mb > message button
             ///mr > message result

end.

'컴터 > delphi' 카테고리의 다른 글

TQuery의 묵시적 transaction 을 줄이기 위해.(cachedUpdate : false => true 로 전환)  (0) 2007.11.29
BDE > Query(DBTables) 사용시  (0) 2007.11.29
북마크  (0) 2007.11.28
DB 검색하기..  (0) 2007.11.28