PEMROGRAMAN DELPHI
Di susun oleh :
SOPIAN, M.KOM
TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INFORMASI
UNIVERSITAS SERANG RAYA
PERTEMUAN I
DASAR PEMROGRAMAN DELPHI
Pada tanggal 8 Februari 2006, Borland mengumumkan akan melepas seluruh jajaran produk
pengembangan aplikasi komputernya termasuk di antaranya Delphi, untuk itulah Borland
membentuk perusahaan baru dengan nama CodeGear sehingga terpisah dari Borland. Saat ini
Delphi menjadi bagian dari jajaran IDE milik Embarcadero Technologies setelah Embarcadero
Technologies mengakuisisi CodeGear. Hal ini disebabkan karena kerugian yang terus menerus
selama 2006 rugi bersih sebesar $53.1 juta, 2007 rugi bersih $61 juta. Sehingga pada tahun 2008
saat CodeGear menderita rugi bersih $22.3 maka CodeGear dijual ke Embarcadero seharga $23
juta untuk menutupi rugi bersih ini.
2. Lingkungan Pengembangan
Umumnya Delphi lebih banyak digunakan untuk pengembangan
aplikasi desktop dan enterprise berbasis database, tetapi sebagai perangkat pengembangan yang
bersifat general-purpose ia juga mampu digunakan dalam berbagai jenis proyek pengembangan
software. Ia juga yang dikenal sebagai salah satu yang membawa istilah RAD tool, kepanjangan
dari Rapid Application Development, saat dirilis tahun 1995 untuk windows 16-bit. Delphi 2, dirilis
setahun kemudian, mendukung lingkungan windows 32-bit, dan versi c++, C++Builder, dirilis
beberapa tahun kemudian. Pada tahun 2001 sebuah versi linux yang dikenal sebagai Kylix tersedia.
Dengan satu rilis baru setiap tahunnya, pada tahun 2002 dukungan untuk Linux (melalui Kylix dan
CLX component library) ditambahkan dan tahun 2003 .NET mulai didukung dengan munculnya
Delphi.Net (Delphi 8).
2
Chief Architect yang membidani Delphi, dan pendahulunya Turbo Pascal, adalah Anders
Hejlsberg sampai kemudian ia pindah ke Microsoft tahun 1996 di mana ia sebagai chief
designer C# dan termasuk orang kunci dalam perancangan Microsoft .Net Framework. Dukungan
penuh untuk .Net ditambahkan pada Delphi 8 (dirilis pada bulan Desember 2003) dengan
penampilan user interface (look and feel) mirip dengan Microsoft Visual Studio .NET.
Delphi 2005 (nama lain dari Delphi 9) mendukung code generation baik untuk win32 maupun
.NET, dan seperti yang telah dikenal, fitur-fitur manipulasi data secara live dari database
secara design-time. Ia juga membawa banyak pembaruan pada IDE secara signifikan.
Para penganjur delphi mengklaim dengan bahasa pemrograman Delphi, IDE dan component
library (VCL/CLX) yang disediakan oleh vendor tunggal memungkinkan satu paket yang lebih
konsisten dan mudah dikenali.
Produk Delphi ini didistribusikan dalam beberapa rancangan: Personal, Professional, Enterprise
(sebelumnya Client/Server) dan Architect.
4. Mengenal Delphi
3
a. Menu Bar
Kelompok ToolBar
Berguna untuk mempercepat
Perintah.
b. Structure
Structure digunakan untuk mengetahui daftar komponen yang terkait pada form yang
ditampilkan dalam bentuk tree (pohon). Komponen yang sedang aktif biasanya diberikan tanda
Shading Color pada nama komponennya.
c. Object Inspector
Digunakan untuk mengetahui sifat serta Event dari masing-masing komponen yang digunakan
(biasanya pada form)
Object Selector/
DropDown List
Dalam Object Inspector terdapat 2 Tab, yaitu : Tab Properties dan Tab Events
4
Tab Properties digunakan untuk mengetahui serta menentukan sifat dari komponen yang
sedang aktif (yang sedang ditunjuk), seperti : tinggi, warna, Font, dll. Contoh Pada Object
Inspector di bawah ini, menujukkan komponen yang sedang aktif adalah Form1. Untuk
mengetahuinya lihat pada DropDown List-nya disana tertulis Form1. Pada Tab Properties
terdapat 2 kolom, yaitu : Kolom yang sebelah kiri bernama Property (nama sifat
komponennya), Kolom yang kedua bernama Value (nilai) menunjukkan nilai sifatnya, seperti :
Berapa Tingginya, Apa warnanya, dll.
Tab Events, digunakan untuk memberikan kejadian pada komponen yang aktif, misal bila
komponen itu di Click atau di Click Ganda, dll. Tab ini biasanya akan berhubungan langsung
dengan Code Editor untuk menuliskan kode program.
d. Form Designer
Digunakan untuk membuat membuat design tampilan aplikasi. Setiap komponen yang akan
digunakan ditempatkan di dalam from designer
e. Tool Palette
5
f. Code Editor
Digunakan untuk menuliskan perintah atau code yang diberikan terhadap sebuah
object/component
6
Cara Menyimpan Project :
Tempat
Menyimpan File
Nama File
3. Ada dua jenis file yang akan di simpan, yaitu Unit dan Project
5. Praktek 1
1. Buka project baru
2. Tambahkan komponen label dan button kedalam form
(Komponen label dan button di ambil dari Tool Palette Standar)
7
Komponen Properties Nilai
Label1 Name lbberubah
Caption Saya Bisa Berubah
Button1 Name btklik
Caption Klik
Form1 Name FPraktekPertama
Caption Praktek Pertama
Perintah di ketik
di antara blok
program begin
dan end
6. Jika sudah selesai simpan unit dengan nama upertama dan project dengan nama Praktek
7. Jalankan program dengan menekan tombol
8
PERTEMUAN 2
VARIABEL DAN TYPE DATA
1. Variabel
Variabel adalah suatu nama unik (sesuai dengan syarat penamaan variabel) yang nilainya dapat
berubah-ubah. Untuk mendefinisikan nama variabel terlebih dahulu harus di awali dengan
perintah Var. Variabel di dalam Delphi ada 2 (dua) macam, yaitu:
a. Variabel Lokal
Sifat variabel lokal, variabel hanya dapat dikenali pada prosedur dimana variabel tersebut
di definisikan
b. Variabel Global
Sifat variabel global, variabel dapat dikenali pada semua prosedur
2. Type Data
Tipe Data adalah suatu nilai yang dapat dinyatakan dalam bentuk konstanta atau variabel dan
operator. Jenis-jenis type data di Delphi adalah :
a. Integer
Adalah tipe data yang menyatakan bilangan/angka. Macam-macam tipe data integer:
signed maksudnya bilangan bertanda, artinya mengenal bilangan negatif dan positif
9
unsigned maksudnya bilangan tak bertanda, dimulai dari 0 (nol) dan tidak mengenal
bilangan negatif dan positif
b. Real
Adalah tipe data yang menyatakan himpunan bilangan/angka. Tipe Real juga disebut tipe
float. Macam-macam tipe data real:
Significant
Tipe Data Jangkauan Nilai Ukuran
digit
-922337203685477.5808 s/d
Currency 19-20 8 Byte
922337203685477.5807
c. Boolean
Adalah tipe data yang menyatakan nilai benar atau salah (True atau False). Macam-macam
tipe data Boolean:
10
d. Character
Adalah tipe data untuk menyatakan sebuah huruf/karakter. Tipe character fundamental
adalah AnsiChar dan WideChar. AnsiChar berukuran satu byte dan WideChar berukuran
lebih dari satu byte. Tipe character generic adalah Char, yang ekuivalen dengan AnsiChar.
Karakter bisa juga ditunjukkan pada konstanta string dengan panjang 1, misalnya ‘A’. Fungsi
Chr menghasilkan nilai karakter bagi setiap range integer AnsiChar. Contoh fungsi Chr(65)
menghasilkan huruf A.
e. String
Adalah tipe data yang menyatakan rangkaian beberapa karakter. Macam-macam tipe string
3. Praktek 2
1. Bukan project minggu lalu (Praktek.dpr)
2. Tambahkan form baru (File –> New –> VCL Form – Delphi
3. Tambahkan 4 komponen label, 2 komponen edit dan 1 komponen button (semuanya
berada di tool palette standar)
11
4. Rubah properties nilai dari masing-masing komponen
Deklarasi
variabel lokal
Memberi nilai
variabel
6. Simpan semua dengan klik menu Save All, kemudian beri nama unit yang kedua dengan
nama upraktek2
7. Rubah main form yang di jalankan dengan fpraktek2
Cara merubah main form :
Pilih Menu Project Kemudian Option, maka akan tampil gambar di bawah ini :
12
Pilih Form, kemudian pada Main Form pilih form yang akan dijalankan lalu klik tombol OK.
13
PERTEMUAN 3
FUNGSI KONVERSI NILAI
1. Konversi Nilai
Adalah apabila Anda memberikan suatu nilai kepada variable, maka variable tersebut harus dapat
menerima/menampilkan nilai yang diberikan. Nilai biasa berupa STRING atau NUMERIK.
Contoh :
Suatu Variabel yang berisi nilai numeric (var tersebut bertype Integer/Word/Longint/ sejenisnya).
Agar nilai Variabel tersebut bisa diterima oleh Variabel yang bertype String. Maka Variabel
tersebut harus DIKONVERSI terlebih dahulu dari Numerik ke String.
Untuk keterangan yang ‘di tolak’ supaya dapat diterima, maka terlebih dahulu NILAI tersebut
harus dikonversi.
14
Nilai Tanggal
2. Praktek 3
15
Button1 Name btproses
Caption Proses
Button2 Name btmulai
Caption Mulai
Button3 Name btkeluar
Caption Keluar
Form1 Name fkonversi
Caption Konversi Nilai
e. Double Klik pada button proses, kemudian ketikkan perintah di bawah ini :
Konversi StrToInt
Konversi IntToStr
f. Double Klik pada button mulai, kemudian ketikkan perintah di bawah ini :
g. Double Klik pada button Keluar, kemudian ketikkan perintah dibawah ini :
h. Simpan semua dengan klik menu Save All dan simpan unit nya dengan nama ukonversi
i. Rubah main form yang akan di run ke fkonversi
j. Jalankan program dengan klik tombol Run (F9)
16
3. Praktek 4
Buat form seperti gambar di bawah ini :
Latihan :
1. Buat form untuk menghitung luas segitiga, luas lingkaran dan luas persegi panjang
17
PERTEMUAN 4
FUNGSI PERCABANGAN IF THEN
Istilah kondisi berarti terdapat dua buah nilai yang nanti akan di bandingkan. Adanya pembandingan
tersebut, maka akan dihasilkan nilai Benar atau Salah.
IF atau CASE
1. If Then (Tunggal)
Kondisi ini hanya memilki nilai tunggal. Definisinya hanya menggunakan IF Tunggal. Jadi bilamana
Kondisi bernilai Benar, maka nilai akan di berikan, tetapi bila Salah, maka tidak ada nilai dari kondisi
yang diberikan.
Contoh Algoritma
Algoritma NilaiTunggal
Deklarasi
A,B,C : Integer
Deskripsi
A 10
B 20
C0
IF A < B
C A+B
Endif
Output (C)
EndDesk
Hasil dari Algoritma di atas adalah akan dapat nilai dari C = 30, karena secara logika (IF) bahwa A < B,
jadi kondisi tersebut bernilai Benar, maka hasil C hasil dari penambahan A + B. Namun apabila
kebalikan dari hasil kondisi di atas (missal. Kondisi bernilai salah), maka C hasilnya adalah 0. Karena
proses penambahan A + B tidak dibaca.
18
Contoh Program :
a. Buat sebuah Form baru lalu tambahkan sebuah komponen timage , topenpicturedialog,
checkbox,dan button. Lalu rubah propertiesnya menjadi
Name Caption
CheckBox1 Sesuaikan Ukuran
Button1 Buka Gambar
d. Jalankan program
19
2. If Then (Jamak)
Pelengkap dari kondisi bernilai Tunggal adalah Kondisi Bernilai Ganda. Kenapa di sebut Ganda ?
Karena meskipun kondisi bernilai Salah, maka hasil dari kondisi masih tetap diberikan. Namun
terdapat tambahan dari Kondisi bernilai Ganda, yaitu perintah ELSE. Perintah ini digunakan untuk
negasi (kalimat pengingkaran) bilamana kondisi bernilai Salah.
Contoh Algoritmanya.
Algoritma NilaiGanda
Deklarasi
A,B,C : Integer
Deskripsi
A 10
B 20
C0
IF A < B
C A+B
Else
CA–B
Endif
Output (C)
EndDesk
Hasil Algoritma di atas adalah = 30, karena ketika di baca kondisi pertama bernilai Benar. Namun
bilamana nilainya di balik A 20 dan B 10, maka hasil algoritma di atas adalah 10, karena ketika
membaca kondisi pertama bernilai Salah, maka perintah negasi (ELSE) akan di baca, dan akhirnya
nilai kondisi (ELSE) akan di baca.
Contoh Program :
a. Tambahkan sebuah form baru dengan cara klik pada File New VCL Form Delphi
b. Tambahkan sebuah trichedit, timage,button,dan 2 buah komponen label . Lalu rubah
peropertiesnya menjadi :
Name Caption
Button1 Ambil File
Label1 Jenis File :
Label2 ....
20
c. Rubahlah ukuran richedit , setelah itu rubah ukuran timage buat seperti ukuran richedit dan
geser timage ke posisi richedit.
21
if ekstensi='bmp' then
Begin
richedit1.Visible:=false;
image1.picture.LoadFromFile(opendialog1.FileName);
label2.Caption:='Gambar';
End else
messagedlg('Format File Tidak Dikenal',mtconfirmation,[mbok],0);
end;
Hasil Programnya :
Kondisi tidak hanya cukup dengan Kondisi Bernilai Ganda, meskipun dari kondisi tersebut telah ada
hasil yang diberikan, meskipun kondisinya bernilai Benar atau Salah.
Namun dari banyak kasus, ada yang tidak dapat diselesaikan dengan kondisi bernilai Ganda, namun
harus diberikan penyelesaian dengan Kondisi Bernilai Banyak, contoh : Kasus Transaksi Barang yang
menghitung banyak alternatif diskon pembelian, menentukan wujud air apakah Es, Cair, Mendidih,
atau Gas/Uap, dan lain-lain.
Contoh Algoritmanya.
Algoritma WujudAir
{algoritma ini hasilnya akan dapat diketahui dari suhu air, apakah wujud air tersebut Es, Cair,
Mendidih, atau Gas.}.
22
Deklarasi
Suhu : Integer
Pesan: string
Deskripsi
Input(Suhu)
If Suhu <= 0
Pesan ‘Es’
Else
If (Suhu > 0) and (Suhu <= 50)
Pesan ‘Cair’
Else
If (suhu > 50) and (suhu <= 100)
Pesan ‘Mendidih’
Else
If (Suhu > 100)
Pesan ‘Gas’
Endif
Endif
Endif
Endif
Output (Pesan)
EndDesk
Algoritma di atas akan menghasilkan pesan = Mendidih, bila suhu di berikan nilai = 20
Contoh Program :
a. Buat sebuah Form baru lalu tambahkan 2 buah komponen label, 2 buah komponen edit , dan
sebuah komponen button . Lalu rubah propertiesnya menjadi :
23
Tampilannya seperti dibawah ini :
Programnya :
24
PERTEMUAN 5
FUNGSI PERCABANGAN CASE OF
1. Case Of Tunggal
a. Buat sebuah form baru
b. Tambahkan 3 buah label lalu rubah propertiesnya menjadi :
Name Caption
Label1 NPM
Label2 Nama
Label3 Nilai
c. Tambahkan 3 buah komponen edit dan 1 buah tUpdown, rubah propertiesnya menjadi
Name Text Associate
Edit1
Edit2
Edit3 0
TupDown1 Edit3
25
g. Lalu klik 2x pada komponen edit3 , masukan kode berikut :
var mutu:string;
begin
case StrToInt(edit3.Text) of
0..59:label6.Caption:='GAGAL';
60..100:label6.Caption:='LULUS';
else
label6.Caption:='Melebihi Batas';
end;
case StrToInt(edit3.Text) of
0..40:mutu:='E';
41..59:mutu:='D';
60..69:mutu:='C';
70..79:mutu:='B';
80..100:mutu:='A';
else
label7.Caption:='Melebihi Batas';
end;
label7.Caption:=mutu;
end;
2. Case Of Majemuk
a. Buat sebuah Form baru
b. Tambahkan richedit,4 buah label, dan 2 buah ComboBox .
c. Rubah properties lines pada komponen richedit1 , seperti pada gambar di bawah :
26
d. Rubah properties caption pada komponen label1 menjadi Martabak, Label2 menjadi Tambahan,
Label 3 menjadi Harga, Label4 menjadi RP.
e. Rubah properties index menjadi 0 dan rubah properties itemsindex combobox1 menjadi :
Manis, Keju, Kacang
f. Rubah properties index menjadi 0 dan rubah properties itemsindex combobox2 menjadi : Susu,
Coklat, Stroberi
g. Klik 2x pada combobox1 dan masukan kode :
var harga:string;
begin
case combobox1.ItemIndex of
0: case combobox2.ItemIndex of
0:harga:='9000';
1:harga:='10000';
2:harga:='11000';
end;
1: case combobox2.ItemIndex of
0:harga:='10000';
1:harga:='11000';
2:harga:='12000';
end;
2: case combobox2.ItemIndex of
0:harga:='9500';
1:harga:='10500';
2:harga:='11500';
end;
end;
label4.Caption:=harga;
end;
27
PERTEMUAN 6
PENGULANGAN (LOOPING)
1. Perulangan FOR
Sifat dari perulangan ini, akan mengulang sampai dengan nilai batas yang ditentukan secara
sequensial (berurutan).
Sintaks Program
Keterangan :
No Perintah Fungsi
2 <var> Nama Variabel Bantu untuk menyimpan nilai perulangan, nama variable
boleh sembarang
4 NilaiAwal Nilai awal yang diberikan sebagai nilai awal perulangan, nilai awal bisa
sembarang
28
Buat Desain Form yang sama seperti desain form di bawah ini:
ssVertical
ScrollBar
Event.
29
Nakhir:= strtoint(edit2.Text);
for Hasil:= Nawal to Nakhir do
begin
memo1.Lines.Add(inttostr(hasil));
end;
end;
2. Perulangan While
Sifat perulangan ini adalah akan mengulang selama kondisi bernilai benar.
Sintak Program
{nilai inisialisasi}
While <Kondisi> do
Begin
Aksi
End;
Keterangan:
Nilai inisialisasi biasanya diberikan pada sebuah variable yang isinya sembarang tergantung dari
kasusnya. Variabel pada inisialisasi diacu oleh Kondisi yang akan dibandingkan dengan nilai
pembandingnya, sehingga kondisi tersebut akan mempunyai nilai True/False.
Dalam Aksi terdapat Counter yang akan membangkitkan nilai variable inisialisasi pada kondisi,
sehingga nanti didapatkan kondisi akan bernilai salah, bertanda proses pengulangan telah selesai.
30
Buat Desain form yang sesuai dengan desain form di bawah ini :
Event.
31
begin
JumGanjil:= JumGanjil+1;
memo1.Lines.Add(inttostr(counter));
end;
end;
Edit2.Text:= inttostr(JumGanjil);
Edit3.Text:= inttostr(JumGenap);
end;
3. Perulangan Repeat
Perulangan ini pada dasarnya sama dengan perulangan While. Namun yang menjadi pembeda
disini adalah :
Tambahkan Tombol Button tepat di bawah komponen Memo1, dan ubah Caption nya menjadi
Clear.
32
Event.
33
Until desimal <= 0;
end;
2 : begin
Repeat
sb:= (desimal mod 16);
if sb=10 then
hexa:= 'A'
else
if sb=11 then
hexa:= 'B'
else
if sb=12 then
hexa:= 'C'
else
if sb=13 then
hexa:= 'D'
else
if sb=14 then
hexa:= 'E'
else
if sb=15 then
hexa:= 'F';
if sb>9 then
memo1.Lines.Add((hexa))
else
memo1.Lines.Add(inttostr(sb));
end;
34
4. Latihan
a. Buat sebuah form baru
b. Tambahkan 1 buah komponen edit, rubah properties text menjadi 0
c. Tambahkan 1 buah tupdown rubah properties associate menjadi edit1
d. Tambahkan sebuah tmemo
e. Tambahkan 4 buah komponen button lalu rubah properties captionnya seperti pada gambar,
hasilnya menjadi seperti gambar ini :
35
i:=1;
n:=StrToInt(edit1.Text);
for i := n downto i do memo1.Lines.Append(IntToStr(i));
end;
Button3 :
procedure TForm2.Button3Click(Sender: TObject);
var i:integer;
begin
memo1.Clear;
i:=1;
n:=StrToInt(edit1.Text);
while i<=n do begin
memo1.Lines.Append(IntToStr(i));
inc(i);
end;
end;
Button4 :
procedure TForm2.Button4Click(Sender: TObject);
var i:integer;
begin
memo1.Clear;
i:=1;
n:=StrToInt(edit1.Text);
repeat memo1.Lines.Append(IntToStr(i)); inc(i);
until i>n;
end;
36
PERTEMUAN 7
PROSEDUR DAN FUNGSI
1. Prosedur
Prosedur adalah suatu program terpisah dari program utama, yang mana untuk
memanggilnya cukup dengan mendeklarasikan nama prosedur di bagian program utama.
Sementara itu, untuk membuat sebuah prosedur anda hanya perlu menuliskan “procedure
namaprocedure;” (tanpa tanda petik) dibagian publik, setelah itu anda tinggal membuat
syntax prosedurnya di bagian implementasi. Atau untuk lebih jelasnya silahkan simak
contoh programnya dibawah ini:
Contoh Program Procedure Langkah pertama buat desain program seperti pada gambar
berikut:
Setelah itu masuk ke mode code dan buat procedure dia area public dan buat programnya
tepat dibawah implementation. Seperti yang ada dibawah ini:
public
{ Public declarations }
procedure tambah;
procedure kurang;
procedure kali;
procedure bagi;
end;
37
var
Form1: TForm1;
Implementation
procedure TForm1.tambah;
var a,b,hasil:Integer;
begin
a:=StrToInt(Edit1.Text);
b:=StrToInt(Edit2.Text);
hasil:=a+b;
Edit3.Text:=IntToStr(hasil);
end;
procedure TForm1.kurang;
var a,b,hasil:Integer;
begin
a:=StrToInt(Edit1.Text);
b:=StrToInt(Edit2.Text);
hasil:=a-b;
Edit3.Text:=IntToStr(hasil);
end;
procedure TForm1.kali;
var a,b,hasil:Integer;
begin
a:=StrToInt(Edit1.Text);
b:=StrToInt(Edit2.Text);
hasil:=a*b;
Edit3.Text:=IntToStr(hasil);
end;
38
procedure TForm1.Bagi;
var a,b,hasil:real;
begin
a:=StrToFloat(Edit1.Text);
b:=StrToFloat(Edit2.Text);
hasil:=a/b;
Edit3.Text:=FloatToStr(hasil);
end;
Lalu panggil procedure yang telah dibuat tadi dengan cara mendeklarasikan nama
peocedure di tombol yang telah dibuat seperti yang terlihat dibawah ini:
39
2. Fungsi
Sementara itu function hampir sama seperti prosedur akan tetapi yang membedakan
adalah dalam pendeklarasian function harus ditambahkan dengan variable dan tipe
data “function namafunction {variable : typedata} typedata;”. Atau untuk lebih jelasnya
silahkan simak contoh programnya dibawah ini:
Setelah itu masukan syntax function tepat dibawah implementation seperti dibawah ini:
implementation
Function Diskon(total:real):real;
begin
Diskon:=total*0.1;
end;
Setelah itu dobel klik button proses dan masukan syntax berikut:
Lalu dobel klik pada tombol ulang dan masukan syntax berikut:
41
PERTEMUAN 8
KONSEP DASAR DATABE MYSQL
MySQL adalah sebuah perangkat lunak sistem manajemen basis data SQL (bahasa Inggris:
database management system) atau DBMS yang multithread, multi-user, dengan sekitar 6 juta
instalasi di seluruh dunia. MySQL AB membuat MySQL tersedia sebagai perangkat lunak gratis
dibawah lisensi GNU General Public License (GPL), tetapi mereka juga menjual dibawah lisensi
komersial untuk kasus-kasus dimana penggunaannya tidak cocok dengan penggunaan GPL.
MySQL adalah Relational Database Management System (RDBMS) yang didistribusikan secara
gratis dibawah lisensi GPL (General Public License). Dimana setiap orang bebas untuk
menggunakan MySQL, namun tidak boleh dijadikan produk turunan yang bersifat komersial.
MySQL sebenarnya merupakan turunan salah satu konsep utama dalam database sejak lama,
yaitu SQL (Structured Query Language).
SQL adalah sebuah konsep pengoperasian database, terutama untuk pemilihan atau seleksi dan
pemasukan data, yang memungkinkan pengoperasian data dikerjakan dengan mudah secara
otomatis. Keandalan suatu sistem database (DBMS) dapat diketahui dari cara kerja optimizer-
nya dalam melakukan proses perintah-perintah SQL, yang dibuat oleh user maupun program-
program aplikasinya. Sebagai database server, MySQL dapat dikatakan lebih unggul
dibandingkan database server lainnya dalam query data. Hal ini terbukti untuk query yang
dilakukan oleh single user, kecepatan query MySQL bisa sepuluh kali lebih cepat dari PostgreSQL
dan lima kali lebih cepat dibandingkan Interbase.
2. Keistimewaan MySQL
a. Portabilitas
MySQL dapat berjalan stabil pada berbagai sistem operasi seperti Windows, Linux,
FreeBSD, Mac Os X Server, Solaris, Amiga, dan masih banyak lagi
b. Open Source
MySQL didistribusikan secara open source, dibawah lisensi GPL sehingga dapat
digunakan secara cuma-cuma.
c. Multi User
MySQL dapat digunakan oleh beberapa user dalam waktu yang bersamaan tanpa
42
mengalami masalah atau konflik
d. Performance Tuning
MySQL memiliki kecepatan yang menakjubkan dalam menangani query sederhana,
dengan kata lain dapat memproses lebih banyak SQL per satuan waktu.
e. Jenis Kolom
MySQL memiliki tipe kolom yang sangat kompleks, seperti signed / unsigned integer,
float, double, char, text, date, timestamp, dan lain-lain.
f. Perintah dan Fungsi
MySQL memiliki operator dan fungsi secara penuh yang mendukung perintah Select
dan Where dalam perintah (query).
g. Keamanan
MySQL memiliki beberapa lapisan sekuritas seperti level subnetmask, nama host, dan
izin akses userdengan sistem perizinan yang mendetail serta sandi terenkripsi.
h. Skalabilitas dan Pembatasan
MySQL mampu menangani basis data dalam skala besar, dengan jumlah rekaman
(records) lebih dari 50 juta dan 60 ribu tabel serta 5 milyar baris. Selain itu batas indeks
yang dapat ditampung mencapai 32 indeks pada tiap tabelnya
i. Konektivitas
MySQL dapat melakukan koneksi dengan klien menggunakan protokol TCP/IP, Unix
soket (UNIX), atau Named Pipes (NT)
j. Lokalisasi
MySQL dapat mendeteksi pesan kesalahan pada klien dengan menggunakan lebih dari
dua puluh bahasa. Meski pun demikian, bahasa Indonesia belum termasuk di dalamnya
k. Antar Muka
MySQL memiliki interface (antar muka) terhadap berbagai aplikasi dan bahasa
pemrograman dengan menggunakan fungsi API (Application Programming Interface)
l. Klien dan Peralatan
MySQL dilengkapi dengan berbagai peralatan (tool)yang dapat digunakan untuk
administrasi basis data, dan pada setiap peralatan yang ada disertakan petunjuk online.
m. Struktur Table
MySQL memiliki struktur tabel yang lebih fleksibel dalam menangani ALTER TABLE,
dibandingkan basis data lainnya semacam PostgreSQL ataupun Oracle.
3. Administrasi SQLYog
a. Membuat User di SQL Yog
43
Buka Aplikasi SQLyog
45
UserName : Pilih user@localhost yang sudah dibuat
Pada kolom database dbpenjualan, chek list semua kolom dari select s/d alter
Kemudian klik Apply
Klik tombol OK
Jika sudah selesai, masuk kembali ke SQLyog dengan menggunakan user yang sudah
dibuat
d. Membuat Table
Klik kanan pada database db_akademik, kemudian pilih Create Table
46
Isi sesuai dengan data di atas, kemudian klik Create Table
dosen
matakuliah
nilai
47
Klik tombol Add
48
Data Source Name : dbakademik
Description :
Server : localhost
User : root
Password : root (jika ada)
Database : dbakademik
49
PERTEMUAN 9
PERINTAH DASAR MYSQL
1. Mengelola Database
a. Membuat Database
Sintaks umum SQL untuk membuat suatu database adalah sebagai berikut :
Bentuk perintah di atas akan membuat sebuah database baru dengan nama
nama_database. Aturan penamaan sebuah database sama seperti aturan penamaan
sebuah variabel, dimana secara umum nama database boleh terdiri dari huruf,
angka dan under-score (_). Jika database yang akan dibuat sudah ada, maka akan
muncul pesan error. Namun jika ingin otomatis menghapus database yang lama jika
sudah ada, aktifkan option IF NOT EXISTS.
Berikut ini contoh perintah untuk membuat database baru dengan nama
“penjualan”
b. Membuka Database
Sebelum melakukan manipulasi tabel dan record yang berada di dalamnya, kita
harus membuka atau mengaktifkan databasenya terlebih dahulu. Untuk
membuka database “penjualan”, berikut ini querynya :
USE penjualan;
Jika perintah atau query di atas berhasil, maka akan ditampilkan pesan sebagai
berikut :
Database changed
c. Menghapus Database
Untuk menghapus suatu database, sintaks umumnya adalah sbb :
DROP DATABASE [IF EXISTS] nama_database;
50
Bentuk perintah di atas akan menghapus database dengan nama nama_database. Jika
databasenya ada maka database dan juga seluruh tabel di dalamnya akan dihapus.
Jadi berhati-hatilah dengan perintah ini! Jika nama database yang akan dihapus tidak
ditemukan, maka akan ditampilkan pesan error. Aktifkan option IF EXISTS untuk
memastikan bahwa suatu database benar-benar ada. Berikut ini contoh perintah
untuk menghapus database dengan nama “penjualan” :
Bentuk umum di atas merupakan bentuk umum pembuatan tabel yang sudah
disederhanakan. Penamaan tabel dan field memiliki aturan yang sama dengan
penamaan database.
Sebagai contoh, kita akan membuat tabel baru dengan struktur sebagai berikut :
51
Untuk membuat tabel tersebut di atas, query atau perintah SQL-nya adalah sebagai
berikut
dimana :
ALTER TABLEmerupakan perintah dasar untuk mengubah tabel.
nama_tabelmerupakan nama tabel yang akan diubah strukturnya.
alter_options merupakan pilihan perubahan tabel. Option yang bisa digunakan,
beberapa di antaranya sebagai berikut :
52
» ADD definisi_field_baru
Option ini digunakan untuk menambahkan field baru dengan
“definisi_field_baru” (nama field, tipe dan option lain).
» MODIFY definisi_field
Option untuk mengubah suatu field menjadi definisi_field
» DROP nama_field
Option untuk menghapus field nama_field
» RENAME TO nama_tabel_baru
Option untuk mengganti nama tabel
Beberapa contoh variasi perintah ALTER untuk mengubah struktur suatu tabel
antara lain :
53
ALTER TABLE pelanggan DROP tgllahir;
Untuk mengubah nama suatu tabel, dapat menggunakan perintah SQL sbb :
Perintah di atas akan mengubah tabel pelanggan menjadi plg dan sebaliknya.
d. Menghapus Tabel
Untuk menghapus sebuah tabel, bentuk umum dari perintah SQL adalah sebagai
berikut :
Contohnya kita akan menghapus tabel dengan nama “pelanggan” maka perintah SQL
nya adalah :
54
Sebagai contoh, kita akan menambahkan sebuah record ke dalam table pelanggan
yang telah kita buat sebelumnya. Berikut ini perintah SQL untuk menambahkan sebuah
record ke dalam tabel pelanggan :
Setelah perintah SQL di atas berhasil dieksekusi, maka record atau data dalam tabel
pelanggan akan bertambah. Jalankan perintah berikut ini untuk melihat isi tabel
pelanggan !
Bentuk umum perintah SQL untuk mengedit suatu record atau data dari suatu tabel
adalah sebagai berikut :
55
Perhatikan beberapa contoh perintah UPDATE tabel pelanggan berikut ini !
Bentuk umum perintah SQL untuk menghapus suatu record atau data dari tabel adalah
sebagai berikut :
56
Beberapa Contoh Penggunaan Delete
• Menghapus data pelanggan yang mempunyai id_pelanggan P0005
DELETE FROM pelanggan WHERE id_pelanggan='P0005';
• Menampilkan id, nama dan alamat dari data pelanggan yang mempunyai id
P0006
• Menampilkan id, nama dan email data semua pelanggan yang mempunyai
email di yahoo
Keterangan
Pada query di atas bentuk LIMIT digunakan untuk membatasi hasil tampilan. LIMIT
banyak digunakan untuk menampilkan data yang relatif banyak. Format fungsi LIMIT
adalah sebagai berikut :
LIMIT awal, jumlah_record
59
PERTEMUAN 10 & 11
MEMBUAT KONEKSI DATABASE MYSQL DENGAN DELPHI
Tambahkan Object TAdoConnection Dari Tools Palette dbGo danAtur Propertinya seperti
dibawah ini :
60
Object Properties Value
Datamodule1 Name dmdb
ADOConnection1 Name ConDB
ConnectionString Double Klik
Klik Build
61
Use Data Source Name : dbakademik
User name : root
Password : root
Allow Saving Password : Cheklist
Connected True
Login Prompt False
62
Object Properties :
dm.condb
Connection qmatakuliah
Name select * from matakuliah
Sql
ADOQuery2 Connection dm.condb
Name qtransaksi
DataSource1 Name Dsmatakuliah
Dataset qmatakuliah
dbGrid1 DataSource dsmatakuliah
63
Double Click dbGrid1
Klik Kanan pada Editing dbgrid1
Pilih Add All Fields
Object Event :
Procedure Refresh
Procedure Bersih
64
FMatakuliah OnActivate procedure TFMatakuliah.FormActivate(Sender: TObject);
begin
qmatakuliah.Open;
end;
BtSimpan OnClick procedure TFMatakuliah.btsimpanClick(Sender: TObject);
begin
if edkode.Text='' then
begin
ShowMessage('Kode Matakuliah Tidak Boleh Kosong');
edkode.SetFocus;
exit;
end;
if edsks.Text='' then
begin
ShowMessage('SKS Tidak Boleh Kosong');
edsks.SetFocus;
exit;
end;
if edkode.Text<>'' then
begin
qtransaksi.SQL.Clear;
qtransaksi.SQL.Add('select * from matakuliah where
mk_kode="'+edkode.Text+'" ');
qtransaksi.Open;
if qtransaksi.RecordCount>0 then
begin
ShowMessage('Data Yang Anda Simpan Sudah Ada');
edkode.SetFocus;
exit;
end;
end;
if messagedlg('Apakah Anda yakin akan menyimpan data ini?',
mtConfirmation,[mbYes,mbNo],0)=mrYes then
begin
qtransaksi.SQL.Clear;
qtransaksi.SQL.Add('insert into matakuliah
values("'+edkode.Text+'","'+ednama.Text+'","'+cbjenis.Text+'", '+
' "'+edsks.Text+'","'+cbsemester.Text+'" )' );
qtransaksi.ExecSQL;
refresh;
bersih;
end;
end;
65
BtEdit OnClick procedure TFMatakuliah.bteditClick(Sender: TObject);
begin
if edkode.Text='' then
begin
ShowMessage('Klik Dulu Data Yang Akan di Rubah');
exit;
end;
66
Btkeluar OnClick procedure TFMatakuliah.btkeluarClick(Sender: TObject);
begin
close;
end;
Dbgrid1 OnCellClick procedure TFMatakuliah.DBGrid1CellClick(Column: TColumn);
begin
edkode.Text:=qmatakuliah.FieldValues['mk_kode'];
ednama.Text:=qmatakuliah.FieldValues['mk_nama'];
cbjenis.Text:=qmatakuliah.FieldValues['mk_jenis'];
edsks.Text:=qmatakuliah.FieldValues['mk_sks'];
cbsemester.Text:=qmatakuliah.FieldValues['mk_semester'];
end;
Edsks OnKeyPress procedure TFMatakuliah.edsksKeyPress(Sender: TObject; var Key: Char);
begin
if not (key in['0'..'9',#8,#13,#32]) then
key:=#0;
end;
Edcari OnChange procedure TFMatakuliah.edcariChange(Sender: TObject);
begin
if cbcari.Text='Kode Matakuliah' then
begin
qmatakuliah.SQL.Clear;
qmatakuliah.SQL.Add('Select * from matakuliah where mk_kode like
"'+edcari.Text+'%" ');
qmatakuliah.Open;
end else
if cbcari.Text='Jenis' then
begin
qmatakuliah.SQL.Clear;
qmatakuliah.SQL.Add('Select * from matakuliah where mk_jenis like
"'+edcari.Text+'%" ');
qmatakuliah.Open;
end else
if cbcari.Text='SKS' then
begin
67
qmatakuliah.SQL.Clear;
qmatakuliah.SQL.Add('Select * from matakuliah where mk_sks like
"'+edcari.Text+'%" ');
qmatakuliah.Open;
end else
if cbcari.Text='Semester' then
begin
qmatakuliah.SQL.Clear;
qmatakuliah.SQL.Add('Select * from matakuliah where mk_semester like
"'+edcari.Text+'%" ');
qmatakuliah.Open;
end;
end;
68
PERTEMUAN 12 & 13
IMPLEMENTASI FUNGSI RELASI DATABASE MYSQL DI DELPHI
Object Properties :
69
GroupBox2
ADOQuery1 Tambahkan uses dmdb
Connection DM.ConDB
Sql Select * from matakuliah
Name qMatakuliah
DataSource1 DataSet qMatakuliah
Name dsMatakuliah
GroupBox2 Caption Matakuliah
Label1 s/d Label5 Caption Sesuaikan
Edit1 s/d Edit4 Name Ednamamatakuliah, edjenis, edsks, edsemester
Text Kosongkan
DblookupCombobox1 Name DblkcbbMatakuliah
ListSource dsMatakuliah
ListField mk_kode
KeyField mk_kode
GroupBox3
ADOQuery2 Connection DM.ConDB
Sql Select * from mahasiswa
Name qMahasiswa
DataSource2 DataSet qMahasiswa
Name dsMahasiswa
GroupBox3 Caption Mahasiswa
Label1 s/d Label3 Caption Sesuaikan
Edit1 s/d Edit3 Name Ednamamahasiswa, edjurusan
Text Kosongkan
DblookupCombobox2 Name DblkcbbMahasiswa
ListSource dsMahasiswa
ListField mhs_nim
KeyField mhs_nim
GroupBox4
Label1 s/d Label7 Caption Sesuaikan
Edit1 s/d Edit7 Name Sesuaikan
Text Sesuaikan
Button1 Caption Hitung
Name btHitung
Button2 Caption Simpan
Name btSimpan
Button3 Caption Edit
Name btEdit
Button4 Caption Hapus
Name btHapus
Button5 Caption Batal
Name btBatal
Button6 Caption Keluar
Name btKeluar
70
ADOQuery3 Connection dm.condb
Name qNilai
Sql select a.ds_kode, b.ds_nama,b.ds_pendidikan,
a.mhs_nim, c.mhs_nama,c.mhs_jurusan,
a.mk_kode, d.mk_nama,d.mk_jenis, d.mk_sks,
d.mk_semester, a.nl_uts, a.nl_uas, a.nl_tugas,
a.nl_quis, a.nl_total, a.nl_grade, a.nl_am
from nilai a, dosen b, mahasiswa c, matakuliah d
where a.ds_kode=b.ds_kode and
a.mhs_nim=c.mhs_nim and
a.mk_kode=d.mk_kode
DataSource3 Dataset qNilai
Name dsNilai
ADOQuery4 Connection dm.condb
Name qTransaksi
DBGrid1 DataSource dsNilai
Object Event :
71
dblkcbbm OnClick procedure TFNilai.dblkcbbmahasiswaClick(Sender: TObject);
ahasiswa begin
ednamamahasiswa.Text:=qmahasiswa.FieldValues['mhs_nama'];
Edjurusan.Text:=qmahasiswa.FieldValues['mhs_jurusan'];
end;
if total>=80 then
begin
Edgrade.Text:='A';
edam.Text:='4';
end
else
if (total<80) and (total>=70) then
begin
Edgrade.Text:='B';
edam.Text:='3';
end
else if (total<70) and (total>=60) then
begin
Edgrade.Text:='C';
edam.Text:='2';
end
else if (total<60) and (total>=50) then
begin
Edgrade.Text:='D';
edam.Text:='1';
end
else
begin
Edgrade.Text:='E';
edam.Text:='0';
end;
end;
72
btSimpan OnClick procedure TFNilai.btsimpanClick(Sender: TObject);
begin
if (edkode.Text='') or (dblkcbbmahasiswa.KeyValue=Null) or
(dblkcbbmatakuliah.KeyValue=Null) then
begin
ShowMessage('Ada Data Yang Kosong');
exit;
end;
with qtransaksi do
begin
SQL.Clear;
SQL.Add('select * from nilai where mhs_nim="'+dblkcbbmahasiswa.KeyValue+'"
and '+
' mk_kode="'+dblkcbbmatakuliah.KeyValue+'" ');
Open;
end;
if qtransaksi.RecordCount>0 then
begin
ShowMessage('Maaf Data Sudah Ada');
exit;
end;
qtransaksi.SQL.Clear;
qtransaksi.SQL.Add('insert into nilai
(mhs_nim,ds_kode,mk_kode,nl_uts,nl_uas,nl_tugas,nl_quis,nl_total,nl_grade,nl_a
m) '+
' values("'+dblkcbbmahasiswa.KeyValue+'","'+edkode.text+'", '+
' "'+dblkcbbmatakuliah.KeyValue+'","'+eduts.Text+'","'+Eduas.Text+'", '+
' "'+Edtugas.Text+'","'+Edquis.Text+'","'+Edtotal.Text+'", '+
' "'+Edgrade.Text+'","'+edam.Text+'" )');
qtransaksi.ExecSQL;
end;
DBGrid1 OnCellClick procedure TFNilai.DBGrid1CellClick(Column: TColumn);
begin
edkode.Text:=qnilai.FieldValues['ds_kode'];
ednamadosen.Text:=qnilai.FieldValues['ds_nama'];
edpendidikan.Text:=qnilai.FieldValues['ds_pendidikan'];
73
dblkcbbmahasiswa.KeyValue:=qnilai.FieldValues['mhs_nim'];
ednamamahasiswa.Text:=qnilai.FieldValues['mhs_nama'];
Edjurusan.Text:=qnilai.FieldValues['mhs_jurusan'];
dblkcbbmatakuliah.KeyValue:=qnilai.FieldValues['mk_kode'];
Ednamamatakuliah.Text:=qnilai.FieldValues['mk_nama'];
Edjenis.Text:=qnilai.FieldValues['mk_jenis'];
edsks.Text:=qnilai.FieldValues['mk_sks'];
edsemester.Text:=qnilai.FieldValues['mk_semester'];
eduts.Text:=qnilai.FieldValues['nl_uts'];
Eduas.Text:=qnilai.FieldValues['nl_uas'];
Edtugas.Text:=qnilai.FieldValues['nl_tugas'];
Edquis.Text:=qnilai.FieldValues['nl_quis'];
Edtotal.Text:=qnilai.FieldValues['nl_total'];
Edgrade.Text:=qnilai.FieldValues['nl_grade'];
Edam.Text:=qnilai.FieldValues['nl_am'];
end;
btEdit OnClick procedure TFNilai.bteditClick(Sender: TObject);
begin
if (edkode.Text='') or (dblkcbbmahasiswa.KeyValue=Null) or
(dblkcbbmatakuliah.KeyValue=Null) then
begin
ShowMessage('Klik Dulu Data Yang Akan Dirubah');
exit;
end;
74
btHapus OnClick procedure TFNilai.bthapusClick(Sender: TObject);
begin
if (dblkcbbmahasiswa.KeyValue=null) or (dblkcbbmatakuliah.KeyValue=Null) then
begin
ShowMessage('Pilih dahulu data yang ingin Anda hapus!');
Exit;
end;
begin
qtransaksi.SQL.Clear;
qtransaksi.SQL.Add('delete from nilai where
mhs_nim="'+dblkcbbmahasiswa.KeyValue+'" and
mk_kode="'+dblkcbbmatakuliah.KeyValue+'" ');
qtransaksi.ExecSQL;
end;
end;
75
Object Properties :
Object Event :
if cbcari.Text='Alamat' then
begin
qdosen.SQL.Clear;
qdosen.SQL.Add('select * from dosen where ds_alamat like "'+Edcari.Text+'%" ');
qdosen.Open;
end else
if cbcari.Text='Spesialisasi' then
begin
qdosen.SQL.Clear;
qdosen.SQL.Add('select * from dosen where ds_spesialisasi like "'+Edcari.Text+'%"
');
qdosen.Open;
end;
end;
btambil OnClick procedure TFCariDataDosen.btambilClick(Sender: TObject);
begin
{tambahkan unit fnilai di uses}
FNilai.edkode.Text:=qdosen.FieldValues['ds_kode'];
FNilai.ednamadosen.Text:=qdosen.FieldValues['ds_nama'];
FNilai.edpendidikan.Text:=qdosen.FieldValues['ds_pendidikan'];
FCariDataDosen.Close;
end;
77
PERTEMUAN 14
MEMBUAT LAPORAN
Object Properties :
79
2. Membuah Kartu Hasil Studi
Object Properties :
81
QrLabel12 Caption No
QrLabel13-QrLabel17 Caption Sesuaikan
DetailBands1
DetailBands1 Frame (Klik Pada Tanda +)
DrawLeft True
DrawRight True
QRSysData1 Data qrsDetailNo
AutoSize False
QRDBText5 DataSet qMahasiswa
DataField mk_nama
QRDBText6 DataSet qMahasiswa
DataField mk_sks
82
3. Membuat Form Untuk Memanggil KHS
Object Properties :
83
Object Event :
Button1 OnClick {Tambahkan unit CetakKHS sebelum mengetikkan perintah dibawah ini }
with CetakKHS do
begin
qmahasiswa.SQL.Clear;
qmahasiswa.SQL.Add('select a.mhs_nim, a.mk_kode, '+
'a.ds_kode, a.nl_grade, a.nl_am, b.mhs_nama, '+
'b.mhs_jurusan, c.mk_nama, c.mk_sks, c.mk_semester, '+
'(a.nl_am*c.mk_sks) as bobot '+
'from nilai a, mahasiswa b, matakuliah c '+
'where a.mhs_nim=b.mhs_nim and '+
'a.mk_kode=c.mk_kode and '+
'a.mhs_nim="'+dblookupcombobox1.keyvalue+'" and '+
'c.mk_semester="'+ComboBox1.Text+'" ');
qmahasiswa.ExecSQL;
qipk.SQL.Clear;
qipk.SQL.Add('select sum(a.nl_am*c.mk_sks) as jumlahbobot, '+
'sum(c.mk_sks) as jumlahsks, '+
'round(sum(a.nl_am*c.mk_sks)/sum(c.mk_sks),2) as ipk '+
'from nilai a, mahasiswa b, matakuliah c '+
'where a.mhs_nim=b.mhs_nim and '+
'a.mk_kode=c.mk_kode and '+
'a.mhs_nim="'+dblookupcombobox1.keyvalue+'" and '+
'c.mk_semester="'+combobox1.text+'" ');
84
qipk.ExecSQL;
qmahasiswa.Open;
qipk.Open;
end;
CetakKHS.QuickRep1.Preview;
end;
85