Home » , , , , » Import Data ke Database Mysql dari Excel dengan Delphi

Import Data ke Database Mysql dari Excel dengan Delphi

Unknown | 6:25 AM | 3comments
Malam ini saya coba buat trik sederhana untuk menginputkan data dari microsoft Excel ke database acces. Walaupun sederhana trik ini cukup berguna untuk load data yang tak terlalu besar karena apabila data yang diload terlalu besar maka program akan mengalami not responding, karena  setiap program yang dibuat dari delphi hanya menjalankan 1 thread saja untuk mengatasi masalah ini biasanya menggunakan multi thread. Tetapi disini saya tidak akan membahas bagaimana pembuatan thread.

Dalam program nanti akan menggunakan modul ComObj untuk pemanggilan microsoft excel. Oke... Langsung saja untuk prakteknya.

Pertama siapkan data di microsoft excel, Syarat yang harus dipenuhi adalah kolom pada Excel harus sama pada table yang akan dinputkan dari excel nanti.

Misalkan saya membuat database test dengan table didalamnya table barang lihat gambar dibawah.
database acces

untuk field Id Berikan type autoIncrement, karena nanti akan otomatis mengisi secara urut.

Untuk di file excel saya contohkan seperti pada gambar dibawah.

form untuk import data dari excel



Kemudian buat aplikasi baru dengan dengan delphi. disini saya menggunakan delphi Xe2, tapi kalau ingin menggunakan delphi Versi lain tidak masalah. Buat form seperti pada gambar dibawah ini.

Komponen terdiri dari
  • TButton = Button1 properties caption diganti dengan Load data
  • TOpenDialog = OpenDialog1
  • TAdoConnection = AdoConnection1
  • TAdoQuery = AdoQuery1
  • TDataSource = DataSource1
  • TDBgrid = Dbgrid1
Selanjutnya untuk pengkodean pertama tambahka modul ComObj pada Uses seperti pada gambar dibawah
.
penambahan modul comObj

Kemudian pada tombol Load Data silahkan isikan kode seperti dibawah ini.
procedure TForm1.Button1Click(Sender: TObject);
var
  Excel : Variant;
  i : Integer;
begin
  if OpenDialog1.Execute  then
  begin
    Try
      Excel := CreateOleObject('Excel.Application');
      Excel.WorkBooks.Open(OpenDialog1.FileName);
      i:=1;
      while VarToStr(Excel.Cells.Range['a'+inttostr(i)])<>'' do
      begin
        AdoQuery1.Close;
        AdoQuery1.SQL.Clear;
        ADoQuery1.SQL.Text :='insert into barang (namabarang,satuan,stok,harga)'+
              'values (:namabarang,:satuan,:stok,:harga)';
        AdoQuery1.Parameters.ParamByName('namabarang').Value:=VarToStr(Excel.cells.range['a'+inttostr(i)]);
        AdoQuery1.Parameters.ParamByName('satuan').Value:=VarToStr(Excel.cells.range['b'+inttostr(i)]);
        AdoQuery1.Parameters.ParamByName('stok').Value:=strtoint(VarToStr(Excel.cells.range['c'+inttostr(i)]));
        AdoQuery1.Parameters.ParamByName('harga').Value:=strtoint(VarToStr(Excel.cells.range['d'+inttostr(i)]));
        AdoQuery1.ExecSQL;
        inc(i);
      end;
      Excel.Quit;
    Except
      on E:Exception do
      begin
        raise Exception.Create(E.Message);
      end;
    End;
  end;
  AdoQuery1.Close;
  AdoQuery1.SQL.Text:='select * from barang';
  AdoQuery1.Open;

  dataSource1.DataSet:=AdoQuery1;
  Dbgrid1.DataSource:=DataSource1;
end; 
Setelah selesai pengkodean kemudian jalankan program dengan menekan F9. Bila tidak ada yang error program akan berjalan dengan lancar dan kemudian tekan tombol Load Data setelah itu cari dimana letak file Excel yang akan diload ke database. Didalam kasus disini file Excel berada dalam folder aplikasi bernama Book1.xlsx setelah berhasil makan akan tampil data seperti dibawah ini.

\hasil load data dari excel ke database acces

Sekian dulu tutorialnya semoga bermanfaat.... jangan lupa komen bila ada kekurangan dari blog ini. terimakasih.

Sedot Sourcenya disini
Share this article :

3 comments:

Adi wicaksono said...

sangat membantu, terima kasih

A.R.Hakim said...

Permisi mas, saya mau tanya, saya memiliki tabel dengan nama tb_barang dengan struktur :
kd_brg |nama |harga
A0001 |BRG_A1|1000
A0002 |BRG_A2|1500
B0001 |BRG_B1|2000
B0002 |BRG_B2|2000
B0003 |BRG_B3|2500

jika saya ingin menampilkan ke dbgrid dengan Adoquery dg parameter kd_brg diisi langsung:
select * from tb_barang where kd_brg in ('A0001','B0001','B0003')
tidak ada masalah, Hasilnya menjadi seperti ini:
kd_brg |nama |harga
A0001 |BRG_A1|1000
B0001 |BRG_B1|2000
B0003 |BRG_B3|2500

Namun saya mengalami kendala jika isi parameter kd_brg saya ambil dari data file excel, misalnya:
data dari sheet1 Kolom A :
Data Excel:
A |B |C |D |E -->F -->G
kd_brg |nama | | |
A0001 |BRG_A1| | |
B0001 |BRG_B1| | |
B0003 |BRG_B3| | |



note : saya menggunakan Database SQLServer
Mohon Bantuannya
Terima kasih

HADIKOMPUTER said...

TERIMA KASIH GAN

 
Copyright © 2011. TUTORIAL DELPHI DAN DATABASE - All Rights Reserved