• Tidak ada hasil yang ditemukan

Exporter CSV Pasarkode

N/A
N/A
Protected

Academic year: 2017

Membagikan "Exporter CSV Pasarkode"

Copied!
14
0
0

Teks penuh

(1)

[KPPDI] Kelompok Penggemar Pemrograman Delphi Indonesia

15 Februari 2014

Membuat Exporter

Database ke CSV/TXT

Program ini dibuat berdasarkan kasus nyata

ANO

(2)

Penulis:

Ano Van

Target Pembaca:

KPPDI Lover

Kategori:

Pemrograman Aplikasi Database

Judul Tulisan :

Membuat Exporter Database ke CSV

Versi Platform:

Delphi 7

Ringkasan:

Program ini digunakan untuk mengekspor atau merubah data dari sebuah database ke dalam 2 format yaitu CSV

dan ZIP, dalam tutorial ini saya memberikan contoh dengan menggunakan database access agar mudah dibuat,

untuk pengembangan lebih lanjut KPPDI lover bisa membuatnya menggunakan database apapun, sementara

untuk koneksinya saya menggunakan koneksi ADO yang dimaenkan dengan 2 buah Query ADO, untuk ZIP sendiri

menggunakan komponen ZipForge. Fungsi yang sama saya pernah membuatnya untuk CSV ke program ESPT Pajak

Cara Kerja :

Tampilan Program

KONTAK PENULIS

Ano Van

Website :

www.pasarkode.com

,

www.penguintechno.com

,

www.sishyfahion.com

Sosial :

http://id.linkedin.com/in/anovan/

,

http://facebook.com/anovanmaximuz

,

(3)

Alur Program

(4)

Tahap 1

Buatlah sebuah form berukuran seperti gambar di bawah ini :

Setelah itu tambahkan beberapa obyek dan set propertinya:

Nama Obyek

Properti

Value

TDateTimePicker

Name

Tanggal

BitBtn

Name

sBitBtn2

Glyph

Icon zip

BitBtn

Name

sBitBtn1

Glyph

Icon txt

BitBtn

Name

buk

Glyph

Icon folder

Form

Name

Form1

Caption

Exporter PK

ADOConnection

Name

Koneksi

Provider

Microsoft.Jet.OLEDB.4.0

LoginPrompt

False

ADOQuery

Name

Query1

(5)

ADOQuery

Name

Query

Connection

koneksi

Label

Name

banyakdata

Caption

0 data diproses

Label

Name

Label1

Label

Name

Label2

Label

Name

Label3

ProgressBar

Name

proses

Statusbar

Name

statusbar

Untuk gambar dalam bitbtn anda bisa membuatnya sendiri dalam format PNG, sedangkan databasenya anda bisa

download di

http://pasarkode.com/all-download.code

dengan nama Database Tutorial Exporter.

Tahap 2

Buatlah sebuah folder dengan nama database yang berada dalam satu folder dengan program yang sedang kita

buat, simpan file database yang sudah anda download ke dalam folder database.

Tahap 3

Sekarang kita akan memulai koding untuk stiap obyeknya, Tambahkan kode di bawah ini dalam tag Uses

Uses

ExtCtrls,ShellApi, FileCtrl,ZipForge;

Ada beberapa bagian dalam fungsi disini yaitu :

1.

Fungsi membaca database dan pengambilan nilai dari database [dalam sBitBtn1 dan sBitBtn2]

2.

Fungsi menentukan folder tempat menyimpan [dalam sBitBtn1 dan sBitBtn2]

3.

Fungsi membuat file CSV [dalam sBitBtn1 dan sBitBtn2]

4.

Fungsi membuat file zip [dalam sBitBtn2]

5.

Fungsi membuka folder [dalam buk]

6.

Fungsi lock program [dalam sBitBtn1 dan sBitBtn2]

Untuk kode penjelasan fungsi-fungsi di atas adalah sebagai berikut :

Fungsi membaca database dan pengambilan nilai dari

database [dalam sBitBtn1 dan sBitBtn2]

koneksi.ConnectionString:=

'Password="";'+

'User ID=Admin;'+

'Data Source='+getcurrentdir()+'\database\Eat-Z.mdb;Persist Security Info=False';

query.SQL.Clear;

(6)

query1.SQL.Add('select a.posno,b.posno,c.itcac,'''+FormatDateTime('yyyymmdd',

tanggal.Date)+'''+left(a.postm,2)+right(a.postm,2)+''00'',c.itds,round(b.posam/1.21,0)

,1 from POSHD a,POSDET b,TBLIT c where b.posno=a.posno and b.posit=c.itcd and

a.posdt='+FormatDateTime('yyyymmdd', tanggal.Date));

query.SQL.Add('select a.posno,b.posno,c.itcac,'''+FormatDateTime('yyyymmdd',

tanggal.Date)+'''+left(a.postm,2)+right(a.postm,2)+''00'',c.itds,round(b.posam/1.21,0)

,1 from POSHD a,POSDET b,TBLIT c where b.posno=a.posno and b.posit=c.itcd and

a.posdt='+FormatDateTime('yyyymmdd', tanggal.Date));

koneksi.Open;

query.Active:=true;

Query1.Active:=true;

Keterangan :

hal pertama adalah mengisikan string konfigurasi untuk koneksi yang membaca lokasi file databse

access, dimana lokasinya dibaca berdasarkan dari pembacaan current folder, yang kemudian membaca folder

database, selanjutnya ADO query akan diisi oleh perintah query sesuai format yang saya buat anda bebas

memodifikasi query ini, sebelumnya di clear -> diisi -> dan aktifkan kembali.

Fungsi menentukan folder tempat menyimpan [dalam

sBitBtn1 dan sBitBtn2]

dir := 'C:';

if SelectDirectory('Pilih Folder Penyimpanan','', dir

) then begin foldersimpan:=dir; label1.Caption:=dir; end;

keterangan :

mencari lokasi penentu yang akan dijadikan lokasi penyimpanan dimana nantinya string yang

dihasilkan akan disimpan dalam variable foldersimpan.

Fungsi membuat file CSV [dalam sBitBtn]

Stream := TFileStream.Create(foldersimpan+'\T1068904100004_'+FormatDateTime('yyyymmdd', tanggal.Date)+'000000.txt', fmCreate);

proses.Max:=Query1.FieldCount-1; try

Stream.Write(OutLine[1], Length(OutLine) * SizeOf(Char)); Stream.Write(sLineBreak, Length(sLineBreak));

Query1.Next; end;

(7)

koneksi.Close; query.Active:=false; Query1.Active:=false;

statusbar.Panels[0].Text:='T1068904100004_'+FormatDateTime('yyyymmdd', tanggal.Date)+'000000.txt';

banyakdata.Caption:=inttostr(Cnt)+' Data diproses, disimpan di '+label1.Caption;

buk.Enabled:=true;

showmessage('Proses Selesai');

end;

keterangan :

pada posisi stream kita membuat file txt, anda bias merubahnya menjadi extensi csv karena

sebenarnya kedua file ini sama, setelah itu proses akan membaca hasil query ADO perbaris dan perkolom yang

kemudian tiap baris pembacaan table akan disimpan dalam variable sementara stemp dan outline, untuk

pemisahnya saya buat dengna tanda ( | ). Nama file dibuat dalam variable stream, dengan format penamaan

T1068904100004_tanggaldibuat.txt

Fungsi membuat file zip [dalam sBitBtn2]

archiver := TZipForge.Create(nil);

try

with archiver do

begin

FileName := foldersimpan+'\T1068904100004_'+FormatDateTime('yyyymmdd',

tanggal.Date)+'000000.zip';

OpenArchive(fmCreate);

BaseDir := foldersimpan+'\';

AddFiles('T1068904100004_'+FormatDateTime('yyyymmdd', tanggal.Date)+'000000.txt');

CloseArchive();

DeleteFile(foldersimpan+'\T1068904100004_'+FormatDateTime('yyyymmdd',

tanggal.Date)+'000000.txt');

keterangan :

variable archiver kita buat kosong, setelah itu akan buat nama file zip yang isinya di ambil dari file

txt/csv yang sudah dibuat dan menghapusnya. Nama file dibuat di variable FIleName.

Fungsi membuka folder [dalam buk]

ShellExecute(Application.Handle, PChar('explore'),

PChar(label1.Caption+''), nil,

(8)

SW_SHOWNORMAL);

Keterangan :

membuka folder explorer bawaan windows dimana lokasinya diambil dari variable label1.caption dari

variable foldersimpan, dimana label1 di visible false.

Fungsi lock program [dalam sBitBtn1 dan sBitBtn2]

if tanggal.Date>EncodeDate(2014,7,22) then begin

Application.MessageBox('Progam sudah melewati tanggal 22 Juli 2014, program sementara dikunci dan anda tidak mempunyai akses lagi, silahkan hubungi www.pasarkode.com jika ingin kembali menggunakan program ini.','Informasi Penguncian Program',MB_ICONSTOP);

sbitbtn2.Enabled:=false; sbitbtn1.Enabled:=false; buk.Enabled:=false; tanggal.Enabled:=false;

form1.Caption:='Exporter Pasarkode [expired]';

keterangan :

ini adalah fungsi tambahan untuk membatasi pemakaian program dari obyek tanggal dimana data

yang diproses tidak boleh lebih dari tanggal yang saya tentukan, kalau lebih tombol akan di lock dan secara

otomatis akan membuka browser dan menuju link saya.

Setelah melihat penjelasan fungsi-fungsi dalam program mari kita liat source kode lengkap untuk tiap tombol yang

ada dalam program.

Full Source code sBitBtn2

procedure TForm1.sBitBtn2Click(Sender: TObject); const

SELDIRHELP = 1000; var

Stream: TFileStream; i: Integer;

OutLine: string; sTemp: string; Cnt : Integer; dir: String;

foldersimpan:string; archiver : TZipForge; begin

//pengatur lock

if tanggal.Date>EncodeDate(2014,7,22) then begin

Application.MessageBox('Progam sudah melewati tanggal 22 Juli 2014, program sementara dikunci dan anda tidak mempunyai akses lagi, silahkan hubungi www.pasarkode.com jika ingin kembali menggunakan program ini.','Informasi Penguncian Program',MB_ICONSTOP);

sbitbtn2.Enabled:=false; sbitbtn1.Enabled:=false; buk.Enabled:=false; tanggal.Enabled:=false;

form1.Caption:='Exporter Pasarkode [expired]';

(9)

shellexecute(0,'open','https://twitter.com/PasarKode','','',SW_SHOWNORMAL);

// if DirectoryExists(getcurrentdir()+'\export') then // begin buk.Enabled:=true; end

// else // begin

// Application.MessageBox('Folder Export tidak ada!'+#13+'system akan otomatis membuatnya.','Folder Tidak Ada',MB_ICONINFORMATION);

// MkDir(getcurrentdir()+'\export'); // buk.Enabled:=true;

// end;

buk.Enabled:=false;

//memulai koneksi dan lakukan parsing koneksi.ConnectionString:=

'Password="";'+ 'User ID=Admin;'+

'Data Source='+getcurrentdir()+'\database\Eat-Z.mdb;Persist Security Info=False'; query.SQL.Clear;

query1.SQL.Clear;

query1.SQL.Add('select a.posno,b.posno,c.itcac,'''+FormatDateTime('yyyymmdd',

tanggal.Date)+'''+left(a.postm,2)+right(a.postm,2)+''00'',c.itds,round(b.posam/1.21,0),1 from POSHD a,POSDET b,TBLIT c where b.posno=a.posno and b.posit=c.itcd and

a.posdt='+FormatDateTime('yyyymmdd', tanggal.Date));

query.SQL.Add('select a.posno,b.posno,c.itcac,'''+FormatDateTime('yyyymmdd',

tanggal.Date)+'''+left(a.postm,2)+right(a.postm,2)+''00'',c.itds,round(b.posam/1.21,0),1 from POSHD a,POSDET b,TBLIT c where b.posno=a.posno and b.posit=c.itcd and

a.posdt='+FormatDateTime('yyyymmdd', tanggal.Date)); koneksi.Open;

query.Active:=true; Query1.Active:=true; //cek jumlah

Cnt := Query1.RecordCount; if Cnt>0 then begin //memilih folder simpan dir := 'C:';

if SelectDirectory('Pilih Folder Penyimpanan','', dir

(10)

label1.Caption:=dir; end; //memlih folder simpan

//mulai

Stream := TFileStream.Create(foldersimpan+'\T1068904100004_'+FormatDateTime('yyyymmdd', tanggal.Date)+'000000.txt', fmCreate);

proses.Max:=Query1.FieldCount-1; try

Stream.Write(OutLine[1], Length(OutLine) * SizeOf(Char)); // Write line ending

Stream.Write(sLineBreak, Length(sLineBreak)); Query1.Next;

statusbar.Panels[0].Text:='T1068904100004_'+FormatDateTime('yyyymmdd', tanggal.Date)+'000000.txt';

banyakdata.Caption:=inttostr(Cnt)+' Data diproses, disimpan di '+label1.Caption; //fungis

FileName := foldersimpan+'\T1068904100004_'+FormatDateTime('yyyymmdd', tanggal.Date)+'000000.zip';

// Because we create a new archive, // we set Mode to fmCreate

OpenArchive(fmCreate);

// Set base (default) directory for all archive operations BaseDir := foldersimpan+'\';

// Add file C:\test.txt the archive; wildcards can be used as well

AddFiles('T1068904100004_'+FormatDateTime('yyyymmdd', tanggal.Date)+'000000.txt'); CloseArchive();

(11)

end;

showmessage('Proses Selesai'); end;

end else begin

showmessage('Tidak ada data pada tanggal '+FormatDateTime('dddddd', tanggal.Date)); koneksi.Close;

query.Active:=false; Query1.Active:=false; end; end;

end;

Full Source Code sBitBtn1

procedure TForm1.sBitBtn1Click(Sender: TObject); var

Stream: TFileStream; i: Integer;

OutLine: string; sTemp: string; Cnt : Integer; dir: String;

foldersimpan:string;

begin

//pengatur lock

if tanggal.Date>EncodeDate(2014,7,22) then begin

Application.MessageBox('Progam sudah melewati tanggal 22 Juli 2014, program sementara dikunci dan anda tidak mempunyai akses lagi, silahkan hubungi www.pasarkode.com jika ingin kembali menggunakan program ini.','Informasi Penguncian Program',MB_ICONSTOP);

sbitbtn2.Enabled:=false; sbitbtn1.Enabled:=false; buk.Enabled:=false; tanggal.Enabled:=false;

form1.Caption:='Exporter Pasarkode [expired]';

(12)

shellexecute(0,'open','http://linkedin.com/in/anovan','','',SW_SHOWNORMAL);

// if DirectoryExists(getcurrentdir()+'\export') then // begin buk.Enabled:=true; end

// else // begin

// Application.MessageBox('Folder Export tidak ada!'+#13+'system akan otomatis membuatnya.','Folder Tidak Ada',MB_ICONINFORMATION);

// MkDir(getcurrentdir()+'\export'); // buk.Enabled:=true;

// end;

buk.Enabled:=false;

//memulai koneksi dan lakukan parsing koneksi.ConnectionString:=

'Password="";'+ 'User ID=Admin;'+

'Data Source='+getcurrentdir()+'\database\Eat-Z.mdb;Persist Security Info=False'; query.SQL.Clear;

query1.SQL.Clear;

query1.SQL.Add('select a.posno,b.posno,c.itcac,'''+FormatDateTime('yyyymmdd',

tanggal.Date)+'''+left(a.postm,2)+right(a.postm,2)+''00'',c.itds,round(b.posam/1.21,0),1 from POSHD a,POSDET b,TBLIT c where b.posno=a.posno and b.posit=c.itcd and

a.posdt='+FormatDateTime('yyyymmdd', tanggal.Date));

query.SQL.Add('select a.posno,b.posno,c.itcac,'''+FormatDateTime('yyyymmdd',

tanggal.Date)+'''+left(a.postm,2)+right(a.postm,2)+''00'',c.itds,round(b.posam/1.21,0),1 from POSHD a,POSDET b,TBLIT c where b.posno=a.posno and b.posit=c.itcd and

a.posdt='+FormatDateTime('yyyymmdd', tanggal.Date)); koneksi.Open;

query.Active:=true; Query1.Active:=true; //cek jumlah

Cnt := Query1.RecordCount; if Cnt>0 then begin //memilih folder simpan dir := 'C:';

if SelectDirectory('Pilih Folder Penyimpanan','', dir

) then begin foldersimpan:=dir; label1.Caption:=dir; end; //memlih folder simpan

(13)

Stream := TFileStream.Create(foldersimpan+'\T1068904100004_'+FormatDateTime('yyyymmdd', tanggal.Date)+'000000.txt', fmCreate);

proses.Max:=Query1.FieldCount-1; try

Stream.Write(OutLine[1], Length(OutLine) * SizeOf(Char)); // Write line ending

Stream.Write(sLineBreak, Length(sLineBreak)); Query1.Next;

statusbar.Panels[0].Text:='T1068904100004_'+FormatDateTime('yyyymmdd', tanggal.Date)+'000000.txt';

banyakdata.Caption:=inttostr(Cnt)+' Data diproses, disimpan di '+label1.Caption; //fungis

//fungsi

buk.Enabled:=true;

showmessage('Proses Selesai'); end;

end else begin

showmessage('Tidak ada data pada tanggal '+FormatDateTime('dddddd', tanggal.Date)); koneksi.Close;

query.Active:=false;

Query1.Active:=false; end; end; end;

Source Code Buk

procedure TForm1.bukClick(Sender: TObject);

begin

(14)

PChar(label1.Caption+''),

nil,

nil,

SW_SHOWNORMAL);

end;

Tampilan Program

Selesai...

Untuk source code lengkap anda bias mendownloadnya di

http://pasarkode.com/all-download.code

dengan nama

Full Source Code Exporter Pasarkode

.

Terima Kasih,

Ano Van

Referensi

Dokumen terkait

Hubungan keeratan dalam kategori kuat antara peran fasilitator dengan tingkat keberdayaan peternak ini dikarenakan penyuluh telah cukup berperan dalam membantu menyediakan fasilitas

Hasil dari uji koefisien determinasi menunjukkan nilai adjusted R square sebesar 0.311 yang artinya pengungkapan tanggung jawab sosial perusahaan (variabel dependen)

Terapi ini dilakukan 2-3 kali seminggu untuk membersihkan racun-racun dan mengeluarkan cairan yang berlebihan dari dalam tubuh, dikarenakan ginjal alami sudah tidak

Fungsi pengawasan komunikasi massa dibagi dalam bentuk utama : fungsi pengawasan peringatan terjadi ketika media massa menginformasikan tentang suatu ancaman ;

Sedangkan menurut Mufidah keluarga merupakan bagian terkecil dari masyarakat, namun memiliki peranan yang sangat penting (Mufidah, 2008). Dalam keluarga, seseorang

Guna menjaga komunikasi secara internal dan meningkatkan hubungan yang baik dengan antara sesama karyawan, serta atasan dan karyawan humas PT Pupuk Sriwidjaja

Berdasarkan pada pengembangan yang telah dilakukan, ditemukan bahwa pembelajaran yang dikemas menarik dan kreatif dibutuhkan oleh guru dan siswa. Produk yang telah