Anda di halaman 1dari 85

MODUL PEMBELAJARAN

PEMROGRAMAN DELPHI

Di susun oleh :
SOPIAN, M.KOM

TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INFORMASI
UNIVERSITAS SERANG RAYA
PERTEMUAN I
DASAR PEMROGRAMAN DELPHI

1. Sejarah dan Perkembangan


Delphi adalah sebuah Lingkungan pengembangan terpadu (IDE) untuk mengembangkan
aplikasi konsol, desktop, web, ataupun perangkat mobile. Produk ini pada awalnya dikembangkan
oleh CodeGear sebagai divisi pengembangan perangkat lunak milik Embarcadero, divisi tersebut
sebelumnya adalah milik Borland. Bahasa Delphi, atau dikenal pula sebagai object
pascal (pascaldengan ekstensi pemrograman berorientasi objek (PBO/OOP)) pada mulanya
ditujukan hanya untuk platform Microsoft Windows, namun saat ini telah mampu digunakan
untuk mengembangkan aplikasi untuk berbagai platform seperti Mac OS X, iOS, Android (lihat di
bawah).

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.

3. Keuntungan Penggunaan Delphi


Delphi menawarkan sejumlah keuntungan dalam pengembangan aplikasi, antara lain:
- Komunitas pengguna yang besar pada Usenet maupun web
- Dapat mengkompilasi menjadi single executable (aplikasi portable), memudahkan distribusi
dan meminimalisir masalah yang terkait dengan versioning
- Banyaknya dukungan dari pihak ketiga terhadap VCL (biasanya tersedia berikut source
codenya) ataupun tools pendukung lainnya (dokumentasi, tool debugging)
- Optimasi kompiler yang cukup cepat
- Mendukung multiple platform dari source code yang sama

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

Property dan Value


Caption = Property
Form1 = Value

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

Digunakan untuk memilih komponen yang akan di tampilkan di dalam form

5
f. Code Editor

Digunakan untuk menuliskan perintah atau code yang diberikan terhadap sebuah
object/component

g. File Project, Unit

Cara Membuat Project Baru :

1. Dari menu utama klik Menu File


2. Kemudian arahkan cursor ke Menu New
3. Pilih Sub Menu VCL Forms Application - Delphi

6
Cara Menyimpan Project :

1. Dari menu utama klik Menu File


2. Kemudian pilih Save All

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)

3. Rubah nilai property dari masing-masing component

7
Komponen Properties Nilai
Label1 Name lbberubah
Caption Saya Bisa Berubah
Button1 Name btklik
Caption Klik
Form1 Name FPraktekPertama
Caption Praktek Pertama

4. Double Click pada button maka akan tampil code editor


5. Masukan perintah atau code dibawah ini :

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:

Tipe Data Jangkauan Nilai Format

Shortint -128 s/d 127 8bit, signed

Smallint -32768 s/d 32767 16bit, signed

Longint -2147483648 s/d 2147483647 32bit, signed

Int64 -2^63 s/d 2^63 -1 64bit, signed

Byte 0 s/d 255 8bit, unsigned

Word 0 s/d 65535 16bit, unsigned

LongWord 0 s/d 4294967295 32bit, unsigned

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

Real48 2.9×10^-39 s/d 1.7×10^38 11-12 6 Byte

Single 1.5×10^-45 s/d 3.4×10^38 7-8 4 Byte

Double 5.0×10^-324 s/d 1.7×10^308 15-16 8 Byte

Extended 3.6×10^-4951 s/d 1.1×10^4932 19-20 10 Byte

Comp -2^63+1 s/d 2^63-1 19-20 8 Byte

-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:

Tipe Data Nilai Ukuran Memori

Boolean True or False 1 Byte

ByteBool True or False 1 Byte

WordBool True or False 2 Byte

LongBool True or False 4 Byte

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

Tipe Data Panjang Teks Ukuran Memori Pemakaian

ShortString 255 karakter 2 s/d 256 Byte compatible

AnsiString ~2^31 karakter 4 Byte s/d 2GB 8bit ansi character

WideString ~2^30 karakter 4 Byte s/d 2GB Unicode character

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

Komponen Properties Nilai


Label1 Caption Nama Depan
Label2 Caption Nama Belakang
Label3 Caption Nama Lengkap
Label4 Name Lblengkap
Caption Kosongkan (hapus)
Edit1 Name Eddepan
Caption Kosongkan (hapus)
Edit2 Name Edbelakang
Caption Kosongkan (hapus)
Button1 Name Btsambung
Caption Sambungkan
Form1 Name FPraktek2
Caption Praktek 2

5. Double klik pada button, kemudian ketikkan perintah/code dibawah ini :

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.

8. Jalankan program dengan menekan tombol run (F9)

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.

Perhatikan Tabel di bawah ini :


No Output / Variabel Nilai Keterangan
1 STRING NUMERIK DI TOLAK
2 STRING STRING DI TERIMA
3 NUMERIK STRING DI TOLAK
4 NUMERIK NUMERIK DI TERIMA

Untuk keterangan yang ‘di tolak’ supaya dapat diterima, maka terlebih dahulu NILAI tersebut
harus dikonversi.

Macam-macam Perintah Konversi


No Fungsi Keterangan
1 INTTOSTR Fungsi ini diberikan untuk mengkonversi dari nilai
Numerik/Integer ke Nilai String
2 STRTOINT Fungsi ini diberikan untuk mengkonversi dari nilai String ke
Numerik/Integer
3 FLOATTOSTR Fungsi ini diberikan untuk mengkonversi dari nilai
Numerik/Real/bilangan pecahan ke Nilai String
4 STRTOFLOAT Fungsi ini diberikan untuk mengkonversi dari nilai String ke
Numerik/Real/bilangan pecahan
5 DATETOSTR Fungsi ini diberikan untuk mengkonversi dari nilai Tanggal ke
Nilai String
6 STRTODATE Fungsi ini diberikan untuk mengkonversi dari Nilai String ke

14
Nilai Tanggal

7 DATETIMETOSTR Fungsi ini diberikan untuk mengkonversi dari Nilai Tanggal


dan Waktu/Jam ke Nilai String
8 STRTODATETIME Fungsi ini diberikan untuk mengkonversi dari Nilai String ke
Nilai Tanggal dan Waktu/Jam

2. Praktek 3

a. Buka project Praktek.dpr


b. Tambahkan form baru
c. Design form seperti gambar dibawah ini

d. Rubah nilai properties komponen


Komponen Properties Nilai
Label1 Caption Penjumlahan 2 Buah Angka
Font [Size] 14
Font [Style][fsUnderline] True
GroupBox1 Caption Penjumlahan
Label2 Caption Nilai Pertama
Label3 Caption Nilai Kedua
Label4 Caption Hasil
Edit1 Name edpertama
Caption Kosongkan (hapus)
Edit2 Name edkedua
Caption Kosongkan (hapus)
Edit3 Name edhasil
Caption Kosongkan (hapus)

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.

Perintah untuk mendefinisikan nilai kondisi adalah dengan menggunakan perintah :

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
C0
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

Tampilannya seperti ini :

b. Klik 2x pada komponen button1 tambahkan kode :

c. Klik 2x pada komponen checkbox lalu tambahkan kode :

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
C0
IF A < B
C  A+B
Else
CA–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.

d. Tambahkan StrUtils pada bagian ujung uses

e. Klik 2x pada komponen Button1 tambahkan kode :

procedure TForm2.Button1Click(Sender: TObject);


var ekstensi:string;
begin
opendialog1.Execute(); //Eksekusi opendialog1
ekstensi:=opendialog1.FileName;//Mengambil nama
file dari opendialog1 ekstensi:=rightstr(ekstensi,3);//Mengambil 3 karakter dari
kanan
ekstensi:=LowerCase(ekstensi);//Mengubah karakter menjadi huruf kecil
if ekstensi='txt' then
Begin
Richedit1.Visible:=true;;
richedit1.Lines.LoadFromFile(opendialog1.FileName);
label2.Caption:='Teks'
End else

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 :

3. If Then dengan Operator Pembanding

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 :

Name Caption Text


Label1 Username
Label2 Password
Edit1 -
Edit2 -
Button1 Login

23
Tampilannya seperti dibawah ini :

b. Klik 2x pada Button1 tambahkan kode :


procedure TForm3.Button1Click(Sender: TObject);
begin
If (edit1.Text='user') and (edit2.Text='pass') then
messagedlg('Selamat datang , anda berhasil login',mtinformation,[mbok],0)
else
messagedlg('Username dan password salah',mtinformation,[mbok],0);
end;

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

d. Tambahkan Sebuah GroupBox lalu rubah captionya menjadi “Hasil”


e. Tambahkan 4 buah label pada groupbox lalu rubah propertiesnya :
Name Caption
Label4 Kelulusan
Label5 Nilai Mutu
Label6 .........
Label7 .........

f. Tampilannya adalah sebagai berikut :

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

For <var> := nilaiAwal to NilaiAkhir do


Begin
Aksi
End;

Keterangan :

No Perintah Fungsi

1 For Keyword Delphi sebagai perintah pengulangan

2 <var> Nama Variabel Bantu untuk menyimpan nilai perulangan, nama variable
boleh sembarang

3 := Assigment (symbol pembrian nilai)

4 NilaiAwal Nilai awal yang diberikan sebagai nilai awal perulangan, nilai awal bisa
sembarang

5 To Keyword Delphi sebagai perintah sampai batas dimana pengulangan itu


akan dilakukan

6 NilaiAkhir Batas nilai pengulangan

7 Do Keyword Delphi sebagai penutup perintah FOR

8 Begin Keyword Delphi sebagai dimulainya proses pengulangan

9 Aksi Perintah proses pengulangan, berisi sintak-sintak yang dibutuhkan


untuk pengulangan, seperti : pencetakan nilai, dll

10 End; Keyword Delphi sebagai akhir proses pengulangan

28
Buat Desain Form yang sama seperti desain form di bawah ini:

No Komponen Property Value Keterangan

1 Memo Lines (Tstrings) ……. […]

Klik Tombol […]

Pilih memo1, Tekan Tombol


Delete 2x

ssVertical
ScrollBar

Event.

1. Klik 2x Tombol Proses

procedure TForm1.Button1Click(Sender: TObject);


var Nawal,Nakhir : Integer;
Hasil : Integer;
begin
Nawal := strtoint(edit1.Text);

29
Nakhir:= strtoint(edit2.Text);
for Hasil:= Nawal to Nakhir do
begin
memo1.Lines.Add(inttostr(hasil));
end;
end;

2. Klik 2x Tombol Lagi


procedure TForm1.Button2Click(Sender: TObject);
begin
edit1.Text:= ' ';
edit2.Text:= ' ';
edit1.SetFocus;
end;

3. Klik 2x Tombol Clear


procedure TForm1.Button3Click(Sender: TObject);
begin
memo1.Clear;
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.

1. Klik 2x Tombol Proses


procedure TForm1.Button1Click(Sender: TObject);
var BAngka :Integer;
Counter,JumGenap,
JumGanjil : Integer;
begin
BAngka := strtoint(Edit1.Text);
JumGenap:= 0;
JumGanjil:= 0;
Counter:= 0; {nilai init}
While Counter < BAngka do
begin
Counter:= Counter+1;
if (Counter mod 2)= 0 then
begin
JumGenap:= JumGenap+1;
memo2.Lines.Add(inttostr(counter));
end else

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 :

a. Perulangan Repeat Kondisi diberikan di akhir sedangkan While di awal


b. Perulangan Repeat akan mengulang selama kondisi bernilai salah, sedangkan While selama
kondisi bernilai benar.

Desain form yang disesuaikan dari aturan tabel di bawah ini :

No Komponen Property Value Keterangan

1 Panel Caption Kosongkan


BevelInner BvLowered
BevelOuter BvRaised
BevelWidth 4
2 RadioGroup Caption Jenis Konversi
Items Klik tombol […]
Isi dengan :
Desimal ke Biner
Desimal ke Oktal
Desimal ke Hexadesimal

Tambahkan Tombol Button tepat di bawah komponen Memo1, dan ubah Caption nya menjadi
Clear.

32
Event.

1. Klik 2x Tombol Proses

procedure TForm1.Button1Click(Sender: TObject);


var
desimal: integer;
sb : Integer;
hexa : char;
begin
desimal:= strtoint(edit1.Text);
case radiogroup1.ItemIndex of
0 : begin
Repeat
sb:= (desimal mod 2);
memo1.Lines.Add(inttostr(sb));
desimal:= desimal div 2;
Until desimal <= 0;
end;
1 : begin
Repeat
sb:= (desimal mod 8);
memo1.Lines.Add(inttostr(sb));
desimal:= desimal div 8;

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));

desimal:= desimal div 16;


Until desimal <= 0;
end;
end;

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 :

f. Klik masing-masing komponen button masukan kode :


Button1 :
procedure TForm2.Button1Click(Sender: TObject);
var i:integer;
begin
memo1.Clear;
i:=1;
n:=StrToInt(edit1.Text);
for i := i to n do memo1.Lines.Append(IntToStr(i));
end;
Button2:
procedure TForm2.Button2Click(Sender: TObject);
var i:integer;
begin
memo1.Clear;

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:

procedure TForm1.Button1Click(Sender: TObject);


begin
Tambah;//masukan di button tambah
end;

procedure TForm1.Button2Click(Sender: TObject);


begin
Kurang;//masukan di button kurang
end;

procedure TForm1.Button3Click(Sender: TObject);


begin
Kali;//masukan di button kali
end;

procedure TForm1.Button4Click(Sender: TObject);


begin
Bagi; //masukan di button bagi
end;

Setelah selesai coba jalankan/Run.

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:

Contoh Program Function


Pertama Buat Desain Program seperti berikut:

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:

procedure TForm1.Button1Click(Sender: TObject);


var Hargabrg,Banyakbrg,total,Diskonya,bayar:Real;
begin
Hargabrg:=StrToFloat(Edit2.Text);
Banyakbrg:=StrToFloat(Edit3.Text);
if Banyakbrg>=5 then
40
begin
Total:=Hargabrg*Banyakbrg;
Diskonya:=diskon(total);
Edit5.Text:=FloatToStr(Diskonya);
bayar:=Total-Diskonya;
Edit4.Text:=FloatToStr(bayar);
end
else
begin
Total:=Hargabrg*Banyakbrg;
Edit4.Text:=FloatToStr(Total);
end;

Lalu dobel klik pada tombol ulang dan masukan syntax berikut:

procedure TForm1.Button3Click(Sender: TObject);


begin
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
Edit5.Clear;
Edit1.SetFocus;
end;

41
PERTEMUAN 8
KONSEP DASAR DATABE MYSQL

1. Konsep Dasar 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

MySQL Host Address : localhost


User Name : root
Password : Jika ada masukan

Kemudian klik tombol Connect

Klik tanda + pada database mysql


Pilih table user
Pilih Tab 3 Table Data
Double Click Pada Row (baris) kosong paling bawah
Kemudian isi kolom host dengan localhost dan kolom user dengan user masing-
masing dan untuk untuk kolom password kosongkan
Ganti status N menjadi Y pada kolom select_priv s/d kolom trigger_priv
Kemudian Klik Icon Simpan/Save
44
b. Membuat Database

Klik kanan pada posisi root@localhost , selanjutnya klik Create Database

Masukan nama database db_akademik kemudian klik Create

c. Memberikan Akses Kepada User

Pilih Menu Tools -> User Manager -> Manage Permissions

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

Masukan table name mahasiswa kemudian klik OK

Dengan langkah yang sama buat table di bawah ini :

dosen

matakuliah

nilai

4. Membuat Koneksi ODBC


Buka Control Panel
Double Click Administrative Tools
Double Click Data Sources (ODBC)

47
Klik tombol Add

Pilih MySQL ODBC 3.51 Driver Kemudian Klik Finish

48
Data Source Name : dbakademik
Description :
Server : localhost
User : root
Password : root (jika ada)
Database : dbakademik

Kemudian Klik Test

Jika muncul pesan di atas, maka koneksi berhasil.


Selanjutnya klik tombol OK

49
PERTEMUAN 9
PERINTAH DASAR MYSQL

1. Mengelola Database
a. Membuat Database
Sintaks umum SQL untuk membuat suatu database adalah sebagai berikut :

CREATE DATABASE [IF NOT EXISTS] nama_database;

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”

CREATE DATABASE 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” :

DROP DATABASE penjualan;

2. Data Definition Language (DDL)


a. Membuat Tabel Baru
Bentuk umum SQL untuk membuat suatu table secara sederhana sebagai berikut :

CREATE TABLE nama_tabel ( field1


tipe(panjang), field2 tipe(panjang),
...
fieldn tipe(panjang),
PRIMARY KEY (field_key)
);

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 :

Nama tabel : pelanggan

No Nama Field Tipe Panjang


1 id_pelanggan * Varchar 5
2 nm_pelanggan Varchar 30
3 alamat Text -
4 telepon Varchar 20
5 email Varchar 50

51
Untuk membuat tabel tersebut di atas, query atau perintah SQL-nya adalah sebagai
berikut

CREATE TABLE pelanggan ( id_pelanggan varchar(5)


NOT NULL, nm_pelanggan varchar(30) NOT NULL,
alamat text,
telepon varchar (20),
email varchar (50),
PRIMARY KEY(id_pelanggan)
);

Pada perintah di atas, beberapa hal yang perlu diperhatikan :


• CREATE TABLEmerupakan perintah dasar dari pembuatan table.
• pelangganmerupakan nama tabel yang akan dibuat.
• id_pelanggan, nm_pelanggan, alamat, telepondan emailmerupakan nama field.
• varchardan textmerupakan tipe data dari field
• NOT NULL merupakan option untuk menyatakan bahwa suatu field tidak
boleh kosong.
• PRIMARY KEY merupakan perintah untuk menentukan field mana yang akan
dijadikan primary key pada tabel.
• 5, 10, 30 dan 50 di belakang tipe data merupakan panjang maksimal dari suatu
field.
• Untuk tipe data date dan text (juga date dan blob) panjang karakter
maksimalnya tidak perlu ditentukan. Jangan lupa akhiri perintah dengan titik-
koma (;)

b. Mengubah Struktur Table dengan ALTER


Untuk mengubah struktur suatu tabel, bentuk umum perintah SQL-nya sebagai
berikut

ALTER TABLE nama_tabel alter_options;

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).

» ADD INDEX nama_index


Option ini digunakan untuk menambahkan index dengan nama
“nama_index” pada tabel.

» ADD PRIMARY KEY (field_kunci)


Option untuk menambahkan primary key pada tabel

» CHANGE field_yang_diubah definisi_field_baru


Option untuk mengubah field_yang_diubah menjadi definisi_field_baru

» 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 :

Menambahkan field “tgllahir” ke tabel pelanggan

ALTER TABLE pelanggan ADD tgllahir date NOT NULL;

Menambahkan primary key pada suatu tabel

ALTER TABLE pelanggan ADD PRIMARY KEY(id_pelanggan);

Mengubah tipe field tgllahir menjadi varchar dalam tabel pelanggan

ALTER TABLE pelanggan MODIFY tgllahir varchar(8) NOT NULL;

Menghapus field tgllahir dari tabel pelanggan

53
ALTER TABLE pelanggan DROP tgllahir;

c. Mengubah Nama Tabel

Untuk mengubah nama suatu tabel, dapat menggunakan perintah SQL sbb :

RENAME TABLE pelanggan TO plg;


ALTER TABLE plg RENAME TO pelanggan;

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 :

DROP TABLE nama_tabel;

Contohnya kita akan menghapus tabel dengan nama “pelanggan” maka perintah SQL
nya adalah :

DROP TABLE pelanggan;

3. Data Manipulation Language (DML)


Bentuk umum perintah SQL untuk menambahkan record atau data ke dalam suatu tabel
adalah sebagai berikut :

INSERT INTO nama_tabel VALUES (‘nilai1’,’nilai2’,...);

atau dapat dengan bentuk sebagai berikut :

INSERT INTO nama_tabel(field1,field2,...)


VALUES (‘nilai1’,’nilai2’,...);

atau dapat juga dengan bentuk sebagai berikut :

INSERT INTO nama_tabel


SET field1=’nilai1’, field2=’nilai2’,...;

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 :

INSERT INTO pelanggan VALUES ('P0001', 'Achmad


Solichin','Jakarta Selatan', '0217327762',
'achmatim@gmail.com');

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 !

SELECT * FROM pelanggan;

4. Mengedit Record dengan UPDATE


Proses update bisa sewaktu-waktu dilakukan jika terdapat data atau record dalam suatu
tabel yang perlu diperbaiki. Proses update ini tidak menambahkan data (record) baru,
tetapi memperbaiki data yang lama. Perubahan yang terjadi dalam proses update bersifat
permanen, artinya setelah perintah dijalankan tidak dapat di-cancel (undo).

Bentuk umum perintah SQL untuk mengedit suatu record atau data dari suatu tabel
adalah sebagai berikut :

UPDATE nama_tabel SET field1=’nilaibaru’ [WHERE kondisi];

Pada perintah untuk update di atas :


- UPDATEmerupakan perintah dasar untuk mengubah record tabel.
- nama_tabelmerupakan nama tabel yang akan diubah recordnya.
- Perintah SET diikuti dengan field-field yang akan diubah yang mana diikuti juga
dengan perubahan isi dari masing-masing field. Untuk mengubah nilai dari
beberapa field sekaligus, gunakan koma (,) untuk memisahkan masing- masing field.
- Perintah WHERE diikuti oleh kondisi tertentu yang menentukan record mana yang
akan diedit (diubah). Perintah WHERE ini boleh ada boleh juga tidak. Jika WHERE
tidak ditambahkan pada perintah update maka semua record dalam tabel
bersangkutan akan berubah.

55
Perhatikan beberapa contoh perintah UPDATE tabel pelanggan berikut ini !

• Mengubah alamat menjadi “Tangerang” untuk pelanggan yang mempunyai id


‘P0001’

UPDATE pelanggan SET alamat='Tangerang' WHERE


id_pelanggan='P0001';

• Mengubah email menjadi “budi@luhur.com” dan alamat menjadi “Bandung”


untuk pelanggan yang mempunyai id_pelanggan ‘P0002’

UPDATE pelanggan SET email='budi@luhur.com',


alamat='Bandung' WHERE id_pelanggan='P0002';

5. Menghapus Record dengan DELETE


Proses delete dilakukan jika terdapat data atau record dalam suatu tabel yang perlu
dihapus atau dihilangkan. Perubahan yang terjadi dalam proses delete bersifat permanen,
artinya setelah perintah dijalankan tidak dapat di-cancel (undo). Jadi berhati-hatilah
dengan perintah delete !

Bentuk umum perintah SQL untuk menghapus suatu record atau data dari tabel adalah
sebagai berikut :

DELETE FROM nama_tabel [WHERE kondisi];

Pada perintah untuk delete di atas :


- DELETE FROM merupakan perintah dasar untuk menghapus suatu record dari
tabel.
- nama_tabelmerupakan nama tabel yang akan dihapus recordnya.
- Perintah WHERE diikuti oleh kondisi tertentu yang menentukan record mana yang
akan dihapus (didelete). Perintah WHERE ini boleh ada boleh juga tidak. Namun
demikian, jika WHEREtidak ditambahkan pada perintah delete maka semua record
dalam tabel bersangkutan akan terhapus. Jadi jangan lupa menambahkan WHERE
jika kita tidak bermaksud mengosongkan table

56
Beberapa Contoh Penggunaan Delete
• Menghapus data pelanggan yang mempunyai id_pelanggan P0005
DELETE FROM pelanggan WHERE id_pelanggan='P0005';

• Menghapus semua pelanggan yang beralamat di “Bandung”


DELETE FROM pelanggan WHERE alamat='Bandung';

6. Menampilkan Record dengan SELECT


Perintah SELECT digunakan untuk menampilkan sesuatu. Sesuatu di sini bisa berupa
sejumlah data dari tabel dan bisa juga berupa suatu ekspresi. Dengan SELECT kita
bisa mengatur tampilan atau keluaran sesuai tampilan yang diinginkan. Bentuk dasar
perintah SELECT data dari tabel adalah sebagai berikut :

SELECT [field | *] FROM nama_tabel [WHERE kondisi];

Perhatikan beberapa contoh perintah SELECT dari tabel pelanggan berikut

• Menampilkan seluruh data atau record (*) dari tabel pelanggan

SELECT * FROM pelanggan;

• Menampilkan field id_pelanggan dan nm_pelanggan dari seluruh


pelanggan dalam tabel pelanggan

SELECT id_pelanggan, nm_pelanggan FROM pelanggan;

• Menampilkan id, nama dan alamat dari data pelanggan yang mempunyai id
P0006

SELECT id_pelanggan, nm_pelanggan, alamat


FROM pelanggan WHERE id_pelanggan = 'P0006';

• Menampilkan id, nama dan email data semua pelanggan yang mempunyai
email di yahoo

SELECT id_pelanggan, nm_pelanggan, email


FROM pelanggan WHERE email LIKE '%yahoo%';

Berikut ini operator perbandingan yang dapat digunakan untuk


membandingkan dua buah nilai dalam MySQL :
- Operator =, akan bernilai TRUE jika nilai yang dibandingkan sama.
57
- Operator != atau <>, akan bernilai TRUE jika nilai yang dibandingkan TIDAK
SAMA (berbeda).
- Operator >, akan bernilai TRUE jika nilai yang pertama lebih besar dari nilai
kedua.
- Operator >=, akan bernilai TRUE jika nilai yang pertama lebih besar atau sama
dengan nilai kedua.
- Operator <, akan bernilai TRUE jika nilai yang pertama lebih kecil dari nilai
kedua.
- Operator <=, akan bernilai TRUE jika nilai yang pertama lebih kecil atau

sama dengan nilai kedua.

Menampilkan data semua pelanggan yang beralamat di Jakarta Selatan dan


mempunyai email di gmail.

SELECT id_pelanggan, nm_pelanggan, alamat, email FROM pelanggan


WHERE alamat = 'Jakarta Selatan' && email LIKE '%gmail.com';

Berikut ini operator penghubung yang dapat digunakan


untuk menghubungkan antara dua kondisi dalam MySQL :
- Operator && atau AND, akan menghubungkan dua kondisi dimana akan bernilai
TRUE jika kedua kondisi bernilai TRUE.
- Operator || atau OR, akan menghubungkan dua kondisi dimana akan bernilai
TRUE jika salah satu atau kedua kondisi bernilai TRUE.
- Operator !, akan me-reverse nilai suatu kondisi logika.

Menampilkan semua data pelanggan secara urut berdasarkan


nama pelanggan dengan perintah ORDER BY

SELECT id_pelanggan, nm_pelanggan


FROM pelanggan ORDER BY nm_pelanggan;
Menampilkan semua data pelanggan secara urut berdasarkan nama
pelanggan secara DESCENDING

Menampilkan 3 record (data) pertama dari tabel pelanggan secara urut


berdasarkan nama pelanggan dengan LIMIT

SELECT id_pelanggan, nm_pelanggan


58
FROM pelanggan ORDER BY nm_pelanggan LIMIT 0,3;

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

Menampilkan jumlah record yang ada di tabel pelanggan.

SELECT COUNT(*)FROM pelanggan;

59
PERTEMUAN 10 & 11
MEMBUAT KONEKSI DATABASE MYSQL DENGAN DELPHI

1. Membuat Data Module

Pilih Menu File  New  Other  Delphi Files  Data Module  OK

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

Pilih Microsoft OLE DB Provider for ODBC Drivers


Kemudian Klik Next

61
Use Data Source Name : dbakademik
User name : root
Password : root
Allow Saving Password : Cheklist

Kemudian Klik Test Connection.

Jika muncul pesan di atas, maka koneksi berhasil.


Kemudian Klik OK

Connected True
Login Prompt False

Simpan data module di atas dengan nama unit dmdb

2. Membuat Form Matakuliah


Buat Form Seperti di bawah ini :

62
Object Properties :

Properties Properties Value

Form1 Caption Form Matakuliah


Name FMatakuliah
Position poScreenCenter
GroupBox1 Caption Input Matakuliah
Label1 s/d Label5 Caption Sesuaikan dengan yang ada di GroupBox Input
Matakuliah
Edit1 Name Edkode
Text Kosongkan
Edit2 Name Ednama
Text Kosongkan
Combobox1 Name Cbjenis
Text Pilih
Item Teori
Praktek
Edit3 Name Edsks
Text 0
Combobox2 Name Cbsemester
Text Pilih
Item I - VIII
Button1 Caption Simpan
Name btsimpan
Button2 Caption Edit
Name Btedit

Button3 Caption Hapus


Name bthapus
Button4 Caption Batal
Name btbatal
Button5 Caption Keluar
Name btkeluar
ADOQuery1 Tambahkan Unit Data Modul di Form Matakuliah

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

GroupBox2 Caption Pencarian


Label6 Caption Dasar Pencarian
Combobox3 Name Cbcari
Text Pilih
Items Kode Matakuliah
Nama Matakuliah
Jenis
SKS
Semester

Object Event :

Object Name Event Value

Tambahkan Procedure Bersih


dan Refresh

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;

if messagedlg('Apakah Anda yakin akan mengedit data ini?',


mtConfirmation,[mbYes,mbNo],0)=mrYes then
begin
qtransaksi.SQL.Clear;
qtransaksi.SQL.Add(' update matakuliah set
mk_nama="'+ednama.text+'", '+
' mk_jenis="'+cbjenis.Text+'", mk_sks="'+edsks.Text+'", '+
' mk_semester="'+cbsemester.Text+'" where
mk_kode="'+edkode.Text+'" ' );
qtransaksi.ExecSQL;
refresh;
bersih;
end;
end;
BtnHapus OnClick procedure TFMatakuliah.bthapusClick(Sender: TObject);
begin
if edkode.Text='' then
begin
ShowMessage('Pilih Dulu Data Yang Akan Dihapus');
exit;
end;

if messagedlg('Apakah Anda yakin akan menghapus data ini?',


mtConfirmation,[mbYes,mbNo],0)=mrYes then
begin
qtransaksi.SQL.Clear;
qtransaksi.SQL.Add('delete from matakuliah where
mk_kode="'+edkode.Text+'" ');
qtransaksi.ExecSQL;
refresh;
bersih;
end;
end;
Btbatal OnClick procedure TFMatakuliah.btbatalClick(Sender: TObject);
begin
bersih;
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='Nama Matakuliah' then


begin
qmatakuliah.SQL.Clear;
qmatakuliah.SQL.Add('Select * from matakuliah where mk_nama 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

Buat Form Seperti di bawah ini :

Object Properties :

Object Properties Value

Form1 Caption Form Nilai


Name FNilai
GroupBox1
GroupBox1 Caption Dosen
Label1 s/d Label3 Caption Sesuaikan
Edit1 s/d Edit3 Name EdKode, Ednamadosen, edpendidikan
Text Kosongkan
SpeedButton1 Glyph Sesuaikan
(Tab Additional) Name Sbcari

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 :

Object Event Value


Name
FNilai OnActivate procedure TFNilai.FormActivate(Sender: TObject);
begin
qmahasiswa.Open;
qmatakuliah.Open;
qnilai.Open;
end;
sbCari OnClick procedure TFNilai.SpeedButton1Click(Sender: TObject);
begin
FCariDataDosen.Show; {Buat Dulu Form Cari Data Dosen, Kemudian Tambahkan
Unit Form Cari Data Dosen di Uses}
end;

dblkcbbm OnClick procedure TFNilai.dblkcbbmatakuliahClick(Sender: TObject);


atakuliah begin
Ednamamatakuliah.Text:=qmatakuliah.FieldValues['mk_nama'];
Edjenis.Text:=qmatakuliah.FieldValues['mk_jenis'];
edsks.Text:=qmatakuliah.FieldValues['mk_sks'];
edsemester.Text:=qmatakuliah.FieldValues['mk_semester'];
end;

71
dblkcbbm OnClick procedure TFNilai.dblkcbbmahasiswaClick(Sender: TObject);
ahasiswa begin
ednamamahasiswa.Text:=qmahasiswa.FieldValues['mhs_nama'];
Edjurusan.Text:=qmahasiswa.FieldValues['mhs_jurusan'];
end;

btHitung OnClick procedure TFNilai.bthitungClick(Sender: TObject);


var uts,uas,tugas,quis,total:real;
begin
uts:=StrToFloat(eduts.Text);
uas:=StrToFloat(eduas.Text);
tugas:=StrToFloat(Edtugas.Text);
quis:=StrToFloat(Edquis.Text);
total:=(uts*25/100)+(uas*40/100)+(tugas*20/100)+(quis*15/100);
Edtotal.Text:=FloatToStr(total);
Edtotal.Text:=FormatFloat('#.#,0',total);

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;

if (eduts.Text='') or (Eduas.Text='') or (Edtugas.Text='') or (Edquis.Text='') 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;

if messagedlg('Apakah Anda yakin akan merubah data ini?',


mtConfirmation,[mbYes,mbNo],0)=mrYes then
begin
qtransaksi.SQL.Clear;
qtransaksi.SQL.Add('update nilai set nl_uts="'+eduts.text+'", '+
' nl_uas="'+Eduas.Text+'", nl_tugas="'+Edtugas.Text+'", '+
' nl_quis="'+Edquis.Text+'",nl_total="'+Edtotal.Text+'", '+
' nl_grade="'+Edgrade.Text+'" '+

where mhs_nim="'+dblkcbbmahasiswa.KeyValue+'" and


mk_kode="'+dblkcbbmatakuliah.KeyValue+'" ');
qtransaksi.ExecSQL;
end;
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;

if messagedlg('Apakah Anda yakin akan menghapus mahasiswa?',


mtConfirmation,[mbYes,mbNo],0)=mrYes then

begin
qtransaksi.SQL.Clear;
qtransaksi.SQL.Add('delete from nilai where
mhs_nim="'+dblkcbbmahasiswa.KeyValue+'" and
mk_kode="'+dblkcbbmatakuliah.KeyValue+'" ');
qtransaksi.ExecSQL;
end;

end;

Membuat Form Cari Dosen

75
Object Properties :

Object Properties Value


Form1 Caption Cari Data Dosen
Name FCariDataDosen
Label1 Caption Dasar Pencarian
Label2 Caption Kata Kunci
Combobox1 Name cbCari
Items Kode Dosen
Nama Dosen
Alamat
Spesialisasi
Text Pilih
Edit1 Name edCari
Button1 Caption Ambil
Name btAmbil
ADOQuery1 Tambahkan uses dmdb
Connection DM.ConDB
Sql Select * from dosen
Name Qdosen
DataSource1 DataSet Qdosen
Name Dsdosen
dbGrid1 DataSource Dsdosen

Object Event :

Object Event Value


Name
FCariData OnActivate procedure TFNilai.FormActivate(Sender: TObject);
Dosen begin
qdosen.Open;
end;

edCari OnChange procedure TFCariDataDosen.EdcariChange(Sender: TObject);


begin
if cbcari.Text='Kode Dosen' then
begin
qdosen.SQL.Clear;
qdosen.SQL.Add('select * from dosen where ds_kode like "'+Edcari.Text+'%" ');
qdosen.Open;
end else

if cbcari.Text='Nama Dosen' then


begin
76
qdosen.SQL.Clear;
qdosen.SQL.Add('select * from dosen where ds_nama like "'+Edcari.Text+'%" ');
qdosen.Open;
end else

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

1. Membuat Laporan Data Matakuliah

Object Properties :

Object Properties Value

Form1 Caption Cetak Data Matakuliah


Name FCetakMatakuliah
ADOQuery1 Tambahkan Uses Udmdb sebelum Memilih
Connection
Connection DM.ConDB
Name qMatakuliah
SQL Select * from matakuliah
QuickRep1 Bands (Klik Pada Tanda +)
HasDetail True
HasSummary True
HasTitle True
DataSet qMatakuliah
TitleBands1
TitleBands1 HasChild True
Frame (Klik Pada Tanda +)
DrawLeft True
DrawRight True
DrawTop True
QrLabel1 Caption Universitas Serang Raya
AlignToBand True
AlignMent taCenter
Font Sesuaikan
78
QrLabel2 Caption UNSERA
AlignToBand True
AlignMent taCenter
Font Sesuaikan
QrLabel3 Caption Jl. Raya Cilegon KM 20 Taktakan Serang
AlignToBand True
AlignMent taCenter
Font Sesuaikan
ChildBands1
ChildBands1 Frame (Klik Pada Tanda +)
DrowBottom True
DrawLeft True
DrawRight True
DrawTop True
QrLabel4 Caption No
QrLabel5 Caption Kode Matakuliah
QrLabel6 Caption Nama Matakuliah
QrLabel7 Caption Jenis
QrLabel8 Caption SKS
QrLabel9 Caption Semester
DetailBands1
DetailBands1 Frame (Klik Pada Tanda +)
DrawLeft True
DrawRight True
QRSysData1 Data qrsDetailNo
AutoSize False
QRDBText1 DataSet qMatakuliah
DataField mk_kode
QRDBText2 DataSet qMatakuliah
DataField mk_nama
QRDBText3 DataSet qMatakuliah
DataField mk_jenis
QRDBText4 DataSet qMatakuliah
DataField mk_sks
QRDBText5 DataSet qMatakuliah
DataField mk_semester

79
2. Membuah Kartu Hasil Studi

Object Properties :

Object Properties Value

Form1 Caption Cetak KHS


Name CetakKHS
ADOQuery1 Tambahkan Uses Udmdb sebelum Memilih
Connection
Connection DM.ConDB
Name qMahasiswa
SQL 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='210120140001' and
c.mk_semester='I'
ADOQuery2 Connection DM.ConDB
Name qIPK
SQL 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='210120140001' and
c.mk_semester='I'
80
QuickRep1 Bands (Klik Pada Tanda +)
HasDetail True
HasPageHeader True
HasSummary True
HasTitle True
DataSet qMahasiswa
PageHeaderBands1
TitleBands1 Frame (Klik Pada Tanda +)
DrawLeft True
DrawRight True
DrawTop True
QrLabel1 Caption Universitas Serang Raya
AlignToBand True
AlignMent taCenter
Font Sesuaikan
QrLabel2 Caption UNSERA
AlignToBand True
AlignMent taCenter
Font Sesuaikan
QrLabel3 Caption Jl. Raya Cilegon KM 10 Taktakan Serang
AlignToBand True
AlignMent taCenter
Font Sesuaikan
QRImage1 Picture Sesuaikan
Stretch True
TitleBands1
TitleBands1 HasChild True
Frame (Klik Pada Tanda +)
DrawLeft True
DrawRight True
DrawTop True
QrLabel4 Caption NIM
QrLabel5 Caption Nama
QrLabel6 Caption Jurusan
QrLabel7 Caption Semester
QrLabel8-QrLabel11 Caption :
QRDBText1 DataSet qMahasiswa
DataField mhs_nim
QRDBText2 DataSet qMahasiswa
DataField mhs_nama
QRDBText3 DataSet qMahasiswa
DataField mhs_jurusan
QRDBText4 DataSet qMahasiswa
DataField mk_semester
ChildBands1
ChildBands1 Frame (Klik Pada Tanda +)
DrawBottom True
DrawLeft True
DrawRight True
DrawTop True

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

QRDBText7 DataSet qMahasiswa


DataField nl_grade
QRDBText8 DataSet qMahasiswa
DataField nl_am
QRDBText9 DataSet qMahasiswa
DataField bobot
SummaryBands1
SummaryBands1 HasChild True
Frame (Klik Pada Tanda +)
DrawBottom True
DrawLeft True
DrawRight True
DrawTop True
QRLabel18 Caption Jumlah Bobot
QRLabel19-QRLabel23 Caption Sesuaikan
QRDBText10 DataSet qIPK
DataField jumlahbobot
QRDBText11 DataSet qIPK
DataField jumlahsks
QRDBText12 DataSet qIPK
DataField IPK
ChildBands2
ChildBands2 Frame (Klik Pada Tanda +)
DrawBottom True
DrawLeft True
DrawRight True
QRLabel14 Caption Serang
QRSysData2 Data qrsDate
QRLabel15 Caption Dekan Fakultas Teknologi Informasi
QRLabel16 Caption Suherman, ST. M.Kom

82
3. Membuat Form Untuk Memanggil KHS

Object Properties :

Object Properties Value

Form1 Caption Cetak KHS


Name FCKHS
ADOQuery1 Tambahkan Uses Udmdb sebelum Memilih
Connection
Connection DM.ConDB
Name qMahasiswa
SQL select distinct a.mhs_nim, a.mhs_nama,
a.mhs_jurusan
from mahasiswa a, matakuliah b, nilai c
where a.mhs_nim=c.mhs_nim and
b.mk_kode=c.mk_kode
Datasource1 Dataset qMahasiswa
Name dsMahasiswa
GroupBox1 Caption Kosongkan
Label1 s/d Label4 Caption Sesuaikan
DBLookupCombobox1 ListSource dsMahasiswa
ListField mhs_nim
KeyField mhs_nim
Edit1 Name EdNama
Edit2 Name EdJurusan
Semester Text Pilih
Items I s/d X
Button1 Caption Cetak
Button2 Caption Keluar

83
Object Event :

Object Name Event Value


FCKHS OnActivate procedure Tfckhs.FormActivate(Sender: TObject);
begin
qmahasiswa.Open;
end;

DBLookUpCombobox1 OnClick procedure Tfckhs.DBLookupComboBox1Click(Sender: TObject);


begin
ednama.Text:=qmahasiswa.FieldValues['mhs_nama'];
edjurusan.Text:=qmahasiswa.FieldValues['mhs_jurusan'];
end;

Button1 OnClick {Tambahkan unit CetakKHS sebelum mengetikkan perintah dibawah ini }

procedure Tfckhs.Button1Click(Sender: TObject);


begin
if (DBLookupComboBox1.KeyValue=null) or (ComboBox1.Text='') or
(ComboBox1.Text='Pilih') then
begin
ShowMessage('Pilih Dulu Mahasiswa dan Semester Yang Akan di
Cetak');
exit;
end;

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

Anda mungkin juga menyukai