Cara mudah mengolah database MySQL dengan Delphi
Mula-mula, saya berasumsi zeos sudah terinstal dengan baik pada delphi anda, kalo belum silahkan download di http://www.sourceforge.net/projects/zeoslib, lalu ikuti petunjuk instalasinya.
Saya juga berasumsi bahwa MySQL sudah berjalan pada komputer anda atau setidaknya bisa diakses sepenuhnya dari komputer anda, kalo belum silahkan download di http://dev.mysql.com/downloads/, lalu ikuti petunjuk instalasinya.
dan
Saya juga berasumsi anda sudah dapat menggunakan MySQL dengan baik, entah menggunakan MySQL Front, SQLYog, PHPMyAdmin atau apa aja, yang penting bisa ..:) selanjutnya buat database "latihan" dan buat satu tabel "Anggota" dengan field "Id" varchar(15), "Nama" varchar(15), "Alamat" varchar(255), atau jalankan script berikut pada SQLEditor aplikasi anda:
create database if not exists `latihan`; USE `latihan`; DROP TABLE IF EXISTS `anggota`; CREATE TABLE `anggota` ( `Id` varchar(15) NOT NULL default '', `Nama` varchar(30) default NULL, `Alamat` varchar(255) default NULL, PRIMARY KEY (`Id`) ) TYPE=MyISAM; insert into `anggota`(`Id`,`Nama`,`Alamat`) values ('123','Agus Made','Yogyakarta'), ('456','Krisna Parta','Yogyakarta juga');atau dump file "db_latihan.sql" dari source code latihan ini.
Buat proyek baru pada delphi yang kurang lebih tampilannya seperti gambar berikut :
Deklarasikan variabel gloabal "editmode" untuk pengelolaan mode tampilan dan akses terhadap setiap komponen:
//... var Form1: TForm1; editmode:0..2=0;//0=browse 1=insert 2=edit implementation //...
Buat beberapa "procedure" bantu berikut, dan deklarasikan sebelum sintaks "private". kurang lebih seperti ini :
//... procedure setmode; procedure kosong; procedure isi; //... private //... implementation //... procedure TForm1.setmode; begin tbTambah.Enabled:=editmode=0; tbEdit.Enabled:=editmode=0; tbSimpan.Enabled:=editmode>0; tbBatal.Enabled:=editmode>0; tbHapus.Enabled:=editmode=0; edId.ReadOnly:=editmode=0; edNama.ReadOnly:=editmode=0; mmAlamat.ReadOnly:=editmode=0; end; procedure TForm1.kosong; begin edId.Text:=''; edNama.Text:=''; mmAlamat.Text:=''; end; procedure TForm1.isi; begin edId.Text:=zqAnggota.fieldbyname('Id').asstring; edNama.Text:=zqAnggota.fieldbyname('Nama').asstring; mmAlamat.Text:=zqAnggota.fieldbyname('Alamat').asstring; end;
lalu berikan event OnAfterScroll pada TZReadOnlyQuery "zqAnggota" dengan sintaks berikut:
procedure TForm1.zqAnggotaAfterScroll(DataSet: TDataSet); begin isi; end;
berikan juga event OnFormShow pada TForm1 "Form1" dengan sintaks berikut:
procedure TForm1.FormShow(Sender: TObject); begin setmode; end;
lalu berikan event OnClick pada TButton "tbTambah" dengan sintaks berikut:
procedure TForm1.tbTambahClick(Sender: TObject); begin case TButton(sender).tag of 0: begin editmode:=1; kosong; setmode; end; //tambah 1: begin editmode:=2; isi; setmode; end; //edit 2: begin editmode:=0; isi; setmode; end; //batal 3: begin //simpan if editmode = 1 then //jika data adalah tambahan zqProses.Script.Text:='insert into anggota(Id,Nama,Alamat)'+ 'values("'+edId.text+'","'+edNama.text+'","'+mmAlamat.Text+'")' else //jika data adalah editan zqProses.Script.Text:='update anggota set'+ 'Id="'+edId.text+'",Nama="'+edNama.text+'",Alamat= "'+ mmAlamat.Text+'" where Id="'+ zqAnggota.fieldbyname('Id').AsString+'"'; zqProses.Execute; zqAnggota.Close; //biar refresh zqAnggota.Open; editmode:=0; setmode; end; 4: begin //hapus zqProses.Script.Text:='delete from anggota where '+ 'Id="'+zqAnggota.fieldbyname('Id').AsString+'"'; zqProses.Execute; zqAnggota.Close; //biar refresh zqAnggota.Open; end; end; end;Event OnClick yang kita buat di atas sebenarnya berlaku untuk semua tombol (tbEdit, tbBatal, tbSimpan dan tbHapus) yang kita buat, menggunakan metode pembagian kerja berdasarkan property "Tag" pada "TButton" tersebut. Jadi hubungkan event OnClick semua tombol tersebut dengan "tbTambahClick"
jika semua sudah 'dilakoni' dengan baik, 'kayaknya' program 'gak bakalan' bermasalah. Jalankan program dan lihat hasilnya, kurang lebih akan seperti ini :
Semua tombol sudah berfungsi dengan baik. Sekali lagi contoh ini sangat sedarhana tidak menggunakan penangan error dan konfirmasi apapun. Pada implementasi sesungguhnya banyak hal yang perlu di'urusi'. Namun demikian setidaknya bagi yang belum pernah 'nyoba' handle MySQL dengan Delphi, bisa menyadari betapa mudah Zeos digunakan untuk hal ini.
0 komentar:
Posting Komentar