Anda di halaman 1dari 22

MODUL 6

IMPLEMENTASI DATABASE MYSQL PADA DELPHI DENGAN ZQUERY

1. Tujuan
a. Mampu mengimplementasikan database MySQL dengan delphi menggunakan
ZQuery

2. Teori Dasar
Untuk menghubungkan database yang telah dibuat dengan suatu program,
dibutuhkan suatu alat penghubung (connector). Pada delphi terdapat berbagai macam
connector yang dapat digunakan, tergantung dari DBMS apa yang kita gunakan. Jika kita
menggunakan database MySQL, maka kita harus menambahkan komponen (menginstal)
connector Zeos DBO dalam aplikasi delphi kita. Zeos DBO tidak hanya dapat digunakan oleh
MySQL, namun dapat digunakan oleh DBMS lainnya, seperti PostgreSQL, Interbase,
Firebird, MS SQL, Sybase, Oracle dan SQLite untuk Delphi, FreePascal/Lazarus, Kylix dan
C++ Builder.

Zeos menyediakan Komponen-komponen yang hampir sama dengan ADO antara lain :
 ZConnection
Merupakan komponen yang menghubungkan antara datashet dengan database secara
fisik. Properti penting yang digunakan dalam ZConnection diantaranya Database,
Connected, HostName, Protocol, Port, User dan Login prompt.
 ZTable
Digunakan sebagai datashet sama seperti komponen tabel BDE. Properti penting
yang digunakan pada ZTable diantaranya Connection, TableName dan Active.
 ZQuery
Digunakan sebagai datashet sama seperti komponen query BDE. Properti penting
yang digunakan pada ZQuery diantaranya Connection, SQL dan Active.
 ZStorProc (Store Procedure)
Digunakan sebagai datashet untuk mengakses store procedure. Properti penting yang
digunakan pada ZStorProc diantaranya Connection, Parameters, ProcedureName dan
Active.

3. Percobaan
Buatlah program input data barang dan jenis barang yang terdiri dari 3 form (Form
Utama, Input Jenis Barang dan Input Barang) dengan menggunakan Zquery dengan database
sebagai berikut :
Nama Database : Perpustakaan
Nama Tabel : Jenis
Field Type Length/Values Index
Kode_Jenis Varchar 10 PRIMARY
Nama_Jenis Varchar 25 -

Nama Tabel : Master


Field Type Length/Values Index
Kode_Barang Varchar 10 PRIMARY
Jenis_Barang Varchar 25
Nama_Barang Varchar 25
Harga_Barang Int 11
Stok_Barnag int 11

4. Langkah Kerja
A. FORM UTAMA
a. Tambahkan komponen ToolBar (1 buah yang terdiri dari 3 ToolButton dan 1
Separator), StatusBar(1 buah yang terdiri dari 2 Panel), ImageList(1 Buah) dan
letakan komponen-komponennya hingga terlihat seperti gambar berikut :
b. Tambahkanlah 3 buah gambar untuk button melalui ImageList1 dengan cara klik
kanan pada ImageList1->ImageListEditor->Add->Pilih Gambar->OK.

c. Aturlah properti dari masing-masing komponen sesuai dengan tabel berikut :


Komponen Properti Nilai
Form 1 Name frmUtama
Caption ::. Form Utama
ImageList1 Height 32
Width 32
ToolBar ButtonHeight 32
ButtonWidth 32
Images ImageList1
ToolButton1 Hint Jenis Barang
ImageIndex 1
ShowHint True
ToolButton2 Hint Barang
ImageIndex 2
ShowHint True
ToolButton3 Hint Keluar
ImageIndex 0
ShowHint True
StatusBar1.Panels[0] Text Nama
StatusBar1.Panels[1] Text Nomor Stambuk

d. Double Click pada ToolButton1, lalu ketikan kode berikut :


procedure TfrmUtama.ToolButton1Click(Sender: TObject);
begin
frmJenisBrg.showmodal;
end;

e. Double Click pada ToolButton2, lalu ketikan kode berikut :


procedure TForm1.ToolButton2Click(Sender: TObject);
begin
frmBrg.ShowModal;
end;

f. Double Click pada ToolButton3, lalu ketikan kode berikut :


procedure TfrmUtama.ToolButton4Click(Sender: TObject);
begin
if messagedlg('Apakah Anda yakin ingin keluar?',
mtconfirmation,[mbyes,mbno],0)=mryes then
application.Terminate;
end;

B. FORM JENIS BARANG


a. Tambahkan komponen Label (3 buah), Edit(2 buah), BitBtn(5 Buah), ZConnection(1
buah), Zquery(1 buah), DataSource(1 buah) dan DbGrid(1 buah) dan letakan
komponen-komponennya hingga terlihat seperti gambar berikut :
b. Aturlah properti dari masing-masing komponen sesuai dengan tabel berikut :
Komponen Properti Nilai
Form 2 Name frmJenisBrg
Caption ::. Master Jenis Barang
Label 1 Caption MASTER JENIS BARANG
Font->Name Tahoma
Font->Size 14
Font->Style [fsBold]
Label 2 Caption Kode Jenis
Label 3 Caption Nama Jenis
Edit1 Text
Edit2 Text
BitBtn1 Caption &Tambah
Glyph Gambar
BitBtn2 Caption &Ubah
Glyph Gambar
BitBtn3 Caption &Simpan
Glyph Gambar
BitBtn4 Caption &Hapus
Glyph Gambar
BitBtn5 Caption &Keluar
Glyph Gambar
ZConnection1 Connected True
Database barang
Hostname localhost
Protocol mysql-5
User root
ZQuery1 Connection ZConnection1
DataSource1 Datashet ZQuery1
DBGrid1 DataSource DataSource1

c. Klik frmJenisBrg-> pilih tab events->double klik pada OnCreate, lalu ketikan kode
berikut :
procedure TfrmJenisBrg.FormCreate(Sender: TObject);
begin
with zquery1 do
begin
active:=false;
sql.Text:='SELECT*FROM jenis';
active:=true;
end;
edit1.Text:='';
edit2.Text:='';
edit1.Enabled:=false;
edit2.Enabled:=false;
bitbtn1.Enabled:=true;
bitbtn2.Enabled:=false;
bitbtn3.Enabled:=false;
bitbtn4.Enabled:=false;
bitbtn5.Caption:='&Keluar';
end;
d. Double Click BitBtn1 (Button Tambah), lalu ketikan kode berikut :
procedure TfrmJenisBrg.BitBtn1Click(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit1.Enabled:=true;
edit2.Enabled:=true;
bitbtn1.Enabled:=false;
bitbtn2.Enabled:=false;
bitbtn3.Enabled:=true;
bitbtn4.Enabled:=false;
bitbtn5.Caption:='&Batal';
edit1.SetFocus;
end;

e. Double Click BitBtn2 (Button Ubah), lalu ketikan kode berikut :


procedure TfrmJenisBrg.BitBtn2Click(Sender: TObject);
begin
if edit1.Text='' then
begin
messagedlg('Kode jenis masih kosong',mterror,[mbok],0);
edit1.Setfocus;
end
else if edit2.Text='' then
begin
messagedlg('Nama jenis masih kosong',mterror,[mbok],0);
edit2.Setfocus;
end
else
begin
with zquery1 do
begin
SQL.Clear;
SQL.Text:='UPDATE jenis SET Kode_Jenis='+Quotedstr
(edit1.Text)+',Nama_Jenis='+ Quotedstr(edit2.Text)+
'WHERE Kode_Jenis='+Quotedstr(Edit1.Text);
ExecSQL;
messagedlg('Data berhasil diubah',mtinformation,
[mbok],0);
formcreate(sender);
bitbtn5.Caption:='&Keluar';
end;
end;
end;

f. Double Click BitBtn3 (Button Simpan), lalu ketikan kode berikut :


procedure TfrmJenisBrg.BitBtn3Click(Sender: TObject);
begin
if edit1.Text='' then
begin
messagedlg('Kode jenis masih kosong',mterror,[mbok],0);
edit1.Setfocus;
end
else if edit2.Text='' then
begin
messagedlg('Nama jenis masih kosong',mterror,[mbok],0);
edit2.Setfocus;
end
else
begin
with zquery1 do
begin
SQL.Clear;
SQL.Text:='INSERT INTO jenis(Kode_Jenis,Nama_Jenis)
VALUES('+Quotedstr(edit1.Text)+','+Quotedstr
(edit2.Text)+')';
ExecSQL;
messagedlg('Data berhasil tersimpan',mtinformation,
[mbok],0);
formcreate(sender);
bitbtn5.Caption:='&Keluar';
end;
end;
end;

g. Double Click BitBtn4 (Button Hapus), lalu ketikan kode berikut :


procedure TfrmJenisBrg.BitBtn4Click(Sender: TObject);
begin
if edit1.Text='' then
begin
messagedlg('Kode jenis masih kosong',mterror,[mbok],0);
edit1.Setfocus;
end
else if edit2.Text='' then
begin
messagedlg('Nama jenis masih kosong',mterror,[mbok],0);
edit2.Setfocus;
end
else
begin
if messagedlg('Apakah Anda yakin ingin menghapus data
ini?',mtconfirmation,[mbyes,mbno],0)=mrYes then
begin
with zquery1 do
begin
SQL.Clear;
SQL.Text:='DELETE FROM jenis WHERE Kode_Jenis='+
Quotedstr(edit1.Text);
ExecSQL;
messagedlg('Data berhasil terhapus',mtinformation,
mbok],0);
formcreate(sender);
bitbtn5.Caption:='&Keluar';
end;
end
else
begin
edit1.Enabled:=true;
edit2.Enabled:=true;
bitbtn1.Enabled:=false;
bitbtn2.Enabled:=true;
bitbtn3.Enabled:=false;
bitbtn4.Enabled:=true;
bitbtn5.Caption:='&Batal';
end;
end;
end;

h. Double Click BitBtn5 (Button Keluar), lalu ketikan kode berikut :


procedure TfrmJenisBrg.BitBtn5Click(Sender: TObject);
begin
if bitbtn5.Caption='&Batal' then
begin
formcreate(sender);
bitbtn5.Caption:='&Keluar';
end
else if bitbtn5.Caption='&Keluar' then
begin
close;
end;
end;

i. Klik DbGrid1-> pilih tab Events->double klik pada onDblClick, lalu ketikan kode
berikut :
procedure TfrmJenisBrg.DBGrid1DblClick(Sender: TObject);
begin
if zquery1.RecordCount<=0 then
begin
messagedlg('Data jenis barang masih
kosong',mtinformation,[mbok],0);
end
else
begin
edit1.Text:=dbgrid1.Fields[0].AsString;
edit2.Text:=dbgrid1.Fields[1].AsString;
edit1.Enabled:=true;
edit2.Enabled:=true;
bitbtn1.Enabled:=false;
bitbtn2.Enabled:=true;
bitbtn3.Enabled:=false;
bitbtn4.Enabled:=true;
bitbtn5.Caption:='&Batal';
end;
end;
C. FORM BARANG
a. Tambahkan komponen Label (5 buah), Edit(4 buah), ComboBox(1 buah), BitBtn(5
Buah), ZConnection(1 buah), ZQuery(1 buah), DataSource(1 buah) dan DbGrid(1
buah) dan letakan komponen-komponennya hingga terlihat seperti gambar berikut :

b. Aturlah properti dari masing-masing komponen sesuai dengan tabel berikut :


Komponen Properti Nilai
Form 3 Name frmBrg
Caption ::. Master Barang
Label 1 Caption MASTER BARANG
Font->Name Tahoma
Font->Size 14
Font->Style [fsBold]
Label 2 Caption Kode Barang
Label 3 Caption Jenis Barang
Label 4 Caption Nama Barang
Label 5 Caption Harga Barang
Label 6 Caption Stok Barang
Edit1 Text
Edit2 Text
Edit3 Text
Edit4 Text 0
Alignment taRightJustify
Edit5 Text 0
taRightJustify
BitBtn1 Caption &Tambah
Glyph Gambar
BitBtn2 Caption &Ubah
Glyph Gambar
BitBtn3 Caption &Simpan
Glyph Gambar
BitBtn4 Caption &Hapus
Glyph Gambar
BitBtn5 Caption &Keluar
Glyph Gambar
ZConnection1 Connected True
Database Barang
Hostname Localhost
Protocol mysql-5
User Root
ZQuery1 Connection ZConnection1
ZQuery2 Connection ZConnection1
DataSource1 Datashet ZQuery1
DBGrid1 DataSource DataSource1

c. Klik frmBrg-> pilih tab Events->double klik pada OnActivate, lalu ketikan kode
berikut :
procedure frmBrg.FormActivate(Sender: TObject);
begin
with zquery2 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM jenis');
Open;
First;
while not zquery2.Eof do
begin
combobox1.Items.Add(zquery2['Nama_Jenis']);
Next;
end;
end;
end;

d. Klik frmBrg-> pilih tab Events->double klik pada OnCreate, lalu ketikan kode
berikut :
procedure frmBrg.FormCreate(Sender: TObject);
begin
with zquery1 do
begin
active:=false;
sql.Text:='SELECT*FROM master';
active:=true;
end;
edit1.Text:='';
edit2.Text:='';
edit3.Text:='0';
edit4.Text:='0';
combobox1.Text:='';
edit1.Enabled:=false;
edit2.Enabled:=false;
edit3.Enabled:=false;
edit4.Enabled:=false;
combobox1.Enabled:=false;
bitbtn1.Enabled:=true;
bitbtn2.Enabled:=false;
bitbtn3.Enabled:=false;
bitbtn4.Enabled:=false;
bitbtn5.Caption:='&Keluar';
end;

e. Double Click BitBtn1(Button Tambah), lalu ketikan kode berikut :


procedure frmBrg.BitBtn1Click(Sender: TObject);
begin
edit1.Enabled:=true;
edit2.Enabled:=true;
edit3.Enabled:=true;
edit4.Enabled:=true;
combobox1.Enabled:=true;
bitbtn1.Enabled:=false;
bitbtn3.Enabled:=true;
bitbtn2.Enabled:=false;
bitbtn4.Enabled:=false;
edit1.SetFocus;
bitbtn5.Caption:='&Batal';
end;

f. Double Click BitBtn2(Button Ubah), lalu ketikan kode berikut :


procedure frmBrg.BitBtn2Click(Sender: TObject);
begin
if edit1.Text='' then
begin
messagedlg('Kode barang masih kosong',mterror,[mbok],0);
edit1.Setfocus;
end
else if edit2.Text='' then
begin
messagedlg('Nama barang masih kosong',mterror,[mbok],0);
edit2.Setfocus;
end
else if (edit3.Text='0') or (edit3.Text='') then
begin
messagedlg('Harga barang masih kosong',mterror,[mbok],0);
edit3.Setfocus;
end
else if combobox1.Text='' then
begin
messagedlg('Jenis barang masih kosong',mterror,[mbok],0);
combobox1.Setfocus;
end
else if (edit4.Text='0') or (edit4.Text='') then
begin
messagedlg('Stok barang masih kosong',mterror,[mbok],0);
edit4.Setfocus;
end
else
begin
with zquery1 do
begin
SQL.Clear;
SQL.Text:='UPDATE master SET Kode_Barang='+Quotedstr
(edit1.Text)+',Nama_Barang='+Quotedstr(edit2.Text)+',
Harga_Barang='+Quotedstr(edit3.Text)+,Jenis_Barang='+
Quotedstr(combobox1.Text)+',Stok_Barang='+Quotedstr
(edit4.Text)+'WHERE Kode_Barang='+Quotedstr
(edit1.Text);
ExecSQL;
messagedlg('Data berhasil diubah',mtinformation,
[mbok],0);
formcreate(sender);
bitbtn5.Caption:='&Keluar';
end;
end;
end;

g. Double Click BitBtn3(Button Simpan), lalu ketikan kode berikut :


procedure frmBrg.BitBtn3Click(Sender: TObject);
begin
if edit1.Text='' then
begin
messagedlg('Kode barang masih kosong',mterror,[mbok],0);
edit1.Setfocus;
end
else if edit2.Text='' then
begin
messagedlg('Nama barang masih kosong',mterror,[mbok],0);
edit2.Setfocus;
end
else if (edit3.Text='0') or (edit3.Text='') then
begin
messagedlg('Harga barang masih kosong',mterror,[mbok],0);
edit3.Setfocus;
end
else if (edit4.Text='0') or (edit4.Text='') then
begin
messagedlg('Stok barang masih kosong',mterror,[mbok],0);
edit3.Setfocus;
end
else if combobox1.Text='' then
begin
messagedlg('Jenis barang masih kosong',mterror,[mbok],0);
combobox1.Setfocus;
end
else
begin
with zquery1 do
begin
SQL.Clear;
SQL.Text:='INSERT INTO master(Kode_Barang,Jenis_Barang,
Nama_Barang,Harga_Barang,Stok_Barang)'+'VALUES('+
Quotedstr(edit1.Text)+','+Quotedstr(combobox1.Text)+','
+Quotedstr(edit2.Text)+','+Quotedstr(edit3.Text)+','+
Quotedstr(edit4.Text)+')';
ExecSQL;
messagedlg('Data berhasil tersimpan',mtinformation,
[mbok],0);
formcreate(sender);
bitbtn5.Caption:='&Keluar';
end;
end;
end;

h. Double Click BitBtn4(Button Hapus), lalu ketikan kode berikut :


procedure frmBrg.BitBtn4Click(Sender: TObject);
begin
if edit1.Text='' then
begin
messagedlg('Kode barang masih kosong',mterror,[mbok],0);
edit1.Setfocus;
end
else if edit2.Text='' then
begin
messagedlg('Nama barang masih kosong',mterror,[mbok],0);
edit2.Setfocus;
end
else if (edit3.Text='0') or (edit3.Text='') then
begin
messagedlg('Harga barang masih kosong',mterror,[mbok],0);
edit3.Setfocus;
end
else if combobox1.Text='' then
begin
messagedlg('Jenis barang masih kosong',mterror,[mbok],0);
combobox1.Setfocus;
end
else if (edit4.Text='0') or (edit4.Text='') then
begin
messagedlg('Stok barang masih kosong',mterror,[mbok],0);
edit4.Setfocus;
end
else
begin
if messagedlg('Apakah Anda yakin ingin menghapus data
ini?',mtconfirmation,[mbyes,mbno],0)=mrYes then
begin
with zquery1 do
begin
SQL.Clear;
SQL.Text:='DELETE FROM master WHERE Kode_Barang='+
Quotedstr(edit1.Text);
ExecSQL;
messagedlg('Data berhasil terhapus',mtinformation,
[mbok],0);
formcreate(sender);
bitbtn5.Caption:='&Keluar';
end;
end
else
begin
edit1.Enabled:=true;
edit2.Enabled:=true;
edit3.Enabled:=true;
edit4.Enabled:=true;
combobox1.Enabled:=true;
bitbtn1.Enabled:=false;
bitbtn2.Enabled:=true;
bitbtn3.Enabled:=false;
bitbtn4.Enabled:=true;
bitbtn5.Caption:='&Batal';
end;
end;
end;

i. Double Click BitBtn5(Button Keluar), lalu ketikan kode berikut :


procedure frmBrg.BitBtn5Click(Sender: TObject);
begin
if bitbtn5.Caption='&Batal' then
begin
formcreate(sender);
bitbtn5.Caption:='&Keluar';
end
else if bitbtn5.Caption='&Keluar' then
begin
combobox1.Items.Clear;
close;
end;
end;

j. Klik DbGrid1-> pilih tab Events->double klik pada onDblClick, lalu ketikan kode
berikut :
procedure frmBrg.DBGrid1DblClick(Sender: TObject);
begin
if zquery1.RecordCount<=0 then
begin
messagedlg('Data barang masih
kosong',mtinformation,[mbok],0);
end
else
begin
edit1.Text:=dbgrid1.Fields[0].AsString;
combobox1.Text:=dbgrid1.Fields[1].AsString;
edit2.Text:=dbgrid1.Fields[2].AsString;
edit3.Text:=dbgrid1.Fields[3].AsString;
edit4.Text:=dbgrid1.Fields[4].AsString;
edit1.Enabled:=true;
edit2.Enabled:=true;
edit3.Enabled:=true;
edit4.Enabled:=true;
combobox1.Enabled:=true;
bitbtn1.Enabled:=false;
bitbtn2.Enabled:=true;
bitbtn3.Enabled:=false;
bitbtn4.Enabled:=true;
bitbtn5.Caption:='&Batal';
end;
end;

k. Simpanlah program tersebut, lalu jalankan dengan cara klik run atau dengan menekan
F9. Jika terjadi kesalahan, periksalah kembali kebenaran program.

5. Latihan
Buatlah form login pada program dalam modul ini. Form login berisi UserName,
Password, dan Status (Anggota,Petugas). Kemudian hubungkanlah Statusbar dengan database
(Panel 1 berisi UserName, dan Panel 2 berisi Status). Pada Form Jenis Barang dan Barang,
pada kode jenis dan kode barang, buatkan kode sehingga ketika ditekan tombol tambah, kode
akan muncul secara otomatis.

Anda mungkin juga menyukai