Monday, April 25, 2016

Cara Mudah Import Data dari Excel ke MySql

Mengumpulkan file tutorial delphi di hardisk. Menatanya agar tertata. Merapikannya agar terlihat rapi dan tak sulit ketika mencri. Akhirnya kutemukan satu tutorial yang saya anggap penting juga untuk dipublish. Berterimakasih sekali buat sahabat yang dulu pernah membuatnya dan pernah saya download fileny, semoga menjadi amal kebaikannya. Dengan sedikit tambahan saya pablish kembali bagaimana cara insert masal file Ms. Excel ke MySq


Baik, kita langsung saja ke tutorialnya. Dibawah ini adalah prosedur yang harus dipersiapkan untuk membuat insert masal tersebut.
-    Membuat database Mysql (download disini)
-    Merancang iterface program Insert data
-    Buat file Ms. Excel dengan nama file anggota.xls (download disini)
Setidakya 3 langkah itulah yang akan kita bahas.
Buat database di MySql dnegna nama db_anggota kemuadian tambahkan tabel didalamnya dengan nama anggaota.

CREATE TABLE anggota(

kode_anggota INT NOT NULL AUTO_INCREMENT,

nama VARCHAR(100) NOT NULL,

alamat VARCHAR(40) NOT NULL,

PRIMARY KEY (kode_anggota)

);


Langkah berikutnya adalah membuat interface aplikasi import data dari Ms Excel ke MySql. Untuk membuat interface-nya, lakukan langkah-langkah berikut ini.
  1. Buatlah project baru dengan memilih menu File?New?Application. Setelah itu, klik icon Save All atau tekan tombol Shift+Ctrl+S dan simpan dulu unitnya dengan nama unit1 dan simpan projectnya dengan nama project1
  2. Tampilkan tampilan form dengan menekan tombol F12, kemudian tambahkan komponen objek Edit1, Memo1, StringGrid1 dan Statusbar
  3. Tambahkan Componen Pallet AdoConnection1 dan AdoQuery1 yang berada di tab ADO klik ganda kedua komponen tersebut
  4. Kemudian klik ganda icon OpenDialog yang terdapat di menu Dialogs
  5. Tambahkan pula dua buah object Button untuk tombol Insert dan Open, dan biarkan property Name-nya dalam kondisi Default. Kemudian desainlah seperti tampilan di bawah ini
  6.  
  7. Buatlah function dan procedure seperti ini di bawa deklarasi private
  8. Private
    { Private declarations}
    procedure DisplayException(Sender: TObject; E: Exception);
    function GiveRowHeader(x : Integer) : String;
    procedure LoadFromXLFile(AFileName : String; ASheetNum: Integer;
    AStringGrid:TStringGrid; var OSheetName : String);
  9. Tambahkan uses ComObj, Excel2000 di bawah implementation
  10. Tukang Tidur Main Youtube 125x125
  11. Kemudian panggilah procedure dan function yang telah anda buat
  12. procedure TForm1.DisplayException(Sender: TObject; E: Exception);
    begin
      StatusBar1.SimpleText := E.Message;
      MessageDlg(E.Message,mtError,[MBOK],0);
    end;
    function TForm1.GiveRowHeader(x: Integer) : String;
    begin
      if (x > 26) then
        Result := GiveRowHeader(x div 26) + GiveRowHeader(x mod 26)
      else
        Result := Chr(Ord('A') + x - 1);
    end;
    procedure TForm1.LoadFromXLFile(AFileName : String; ASheetNum: Integer; AStringGrid:TStringGrid; var OSheetName : String);
    var
      ARow,
      ACol,
      i,
      j       : Integer;
      XLApp,
      XLBook,
      XLSheet : Variant;
    begin
      XLApp := CreateOLEObject('Excel.Application');
      XLApp.Visible := False;
      XLApp.Workbooks.Open(AFileName,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           EmptyParam,
                           0
                           );
      XLBook := XLApp.ActiveWorkbook;
      XLSheet := XLBook.WorkSheets[ASheetNum];
      XLSheet.Activate;
      XLSheet.Cells.SpecialCells(xlCellTypeLastCell,EmptyParam).Activate;
      OSheetName := XLSheet.Name;
      ARow := XLApp.ActiveCell.Row;
      AStringGrid.RowCount := ARow + 1;
      ACol := XLApp.ActiveCell.Column;
      AStringGrid.ColCount := ACol + 1;
      for i := 1 to ARow do
      begin
        AStringGrid.Cells[0, i] := IntToStr(i);
        for j := 1  to ACol do
        begin
          AStringGrid.Cells[j, 0] := GiveRowHeader(j);
          AStringGrid.Cells[j, i] := XLSheet.Cells[i, j];
        end;
      end;
      if not VarIsEmpty(XLApp) then
      begin
        XLApp.DisplayAlerts := False;
        XLApp.Quit;
        XLApp := Unassigned;
        XLBook := Unassigned;
        XLSheet := Unassigned;
      end;
    end;
    
  13. Klik 2x button insert, selanjutnya ketikan kode berikut
  14. procedure TForm1.Button2Click(Sender: TObject);
    var
      server,
      user,
      password,
      db_name,
      SheetName  : string;
      ConnStr,
      StrSQL     : WideString;
      ACol,
      ARow,
      NRows      : Integer;
    begin
      ADOConnection1.Close;
      server   := 'localhost';  //Sesuaikan, bisa diisi IP Address Server MySQL
      user     := 'root'; //Sesuaikan dengan username mysql Anda
      password := ''; //Sesuaikan dengan password mysql Anda
      db_name  := 'db_anggota';
      ConnStr  := 'Provider=MSDASQL;DRIVER={MySQL ODBC 3.51 Driver}; '
                  +'SERVER='+server
                  +'; UID='+user
                  +'; PASSWORD='+password
                  +'; DATABASE='+db_name;
      ADOConnection1.ConnectionString := ConnStr;
      try
        AdoConnection1.Open;
      except
        raise;
      end;
      if ADOConnection1.Connected then begin
        Memo1.Clear;
        Memo1.Lines.Add('Connection established to '+server+'. Logged as '+user+' at '+DateTimeToStr(now));
        StatusBar1.SimpleText := 'Connection established to '+server+'. Logged as '+user+' at '+DateTimeToStr(now);
        LoadFromXLFile(Edit1.Text,1,StringGrid1,SheetName);
        NRows := 0;
        for ARow := 2 to StringGrid1.RowCount-1 do
        begin
          StrSQL := 'INSERT INTO anggota (';
          for ACol := 1 to StringGrid1.ColCount-1 do
            StrSQL := StrSQL + LowerCase(StringGrid1.Cells[ACol,1])+',';
          StrSQL := copy(StrSQL,1,length(StrSQL)-1)+') VALUES (';
    
          for ACol := 1 to StringGrid1.ColCount-1 do
            StrSQL := StrSQL + QuotedStr(StringGrid1.Cells[ACol,ARow])+',';
          StrSQL := copy(StrSQL,1,length(StrSQL)-1)+');';
          Memo1.Lines.Add('QUERY : '+StrSQL);
          ADOQuery1.Close;
          ADOQuery1.SQL.Clear;
          ADOQuery1.SQL.Add(StrSQL);
          ADOQuery1.ExecSQL;
          NRows := NRows + 1;
        end;
        StatusBar1.SimpleText := 'Operation Complete. '+IntToStr(NRows)+' rows inserted';
      end;
    end;
  15. Selanjutnya ke tahap koding. Masuk ke event OnCreate pada Form1 lalu ketikan kode
  16. procedure TForm1.FormCreate(Sender: TObject);
    begin
    Memo1.Lines.Clear;
    ADOQuery1.Connection := ADOConnection1;
    Application.OnException    := DisplayException;
    end;
  17. Tahap terakhir klik 2x tombol open lalu ketikan kode program berikut
  18. procedure TForm1.Button1Click(Sender: TObject);
    begin
    if OpenDialog1.Execute then
      begin
      edit1.Clear;
      edit1.Text:=OpenDialog1.FileName;
    end;
    end;
Sekarang, jalankan program dengan menekan tombol F9 atau melalui menu Runrun
mudah bukan???
Download Program disini


Belajar Iklan Di Facebook 468x60

No comments:

Post a Comment