0% menganggap dokumen ini bermanfaat (0 suara)
948 tayangan

Modul Tutorial Visual Basic 6

Diunggah oleh

Meong Smkti
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
948 tayangan

Modul Tutorial Visual Basic 6

Diunggah oleh

Meong Smkti
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 216

Modul Visual Basic 6

[email protected]

Pengenalan Visual Basic


Visual Basic adalah salah suatu developement tools untuk membangun aplikasi
dalam lingkungan Windows. Dalam pengembangan aplikasi, Visual Basic
menggunakan pendekatan Visual untuk merancang user interface dalam bentuk form,
sedangkan untuk kodingnya menggunakan dialek bahasa Basic yang cenderung
mudah dipelajari. Visual Basic telah menjadi tools yang terkenal bagi para pemula
maupun para developer.

Dalam lingkungan Window's User-interface sangat memegang peranan penting, karena


dalam pemakaian aplikasi yang kita buat, pemakai senantiasa berinteraksi dengan
User-interface tanpa menyadari bahwa dibelakangnya berjalan instruksi-instruksi
program yang mendukung tampilan dan proses yang dilakukan.

Pada pemrograman Visual, pengembangan aplikasi dimulai dengan pembentukkan


user interface, kemudian mengatur properti dari objek-objek yang digunakan dalam
user interface, dan baru dilakukan penulisan kode program untuk menangani kejadian-
kejadian (event). Tahap pengembangan aplikasi demikian dikenal dengan istilah
pengembangan aplikasi dengan pendekatan Bottom Up.

IDE Visual Basic


Langkah awal dari belajar Visual Basic adalah mengenal IDE (Integrated Developement
Environment) Visual Basic yang merupakan Lingkungan Pengembangan Terpadu bagi
programmer dalam mengembangkan aplikasinya. Dengan menggunakan IDE
programmer dapat membuat user interface, melakukan koding, melakukan testing dan
debuging serta menkompilasi program menjadi executable. Penguasaan yang baik
akan IDE akan sangat membantu programmer dalam mengefektifkan tugas-tugasnya
sehingga dapat bekerja dengan efisien.

Menjalankan IDE
Salah satu cara untuk mengaktifkan IDE Visual Basic adalah menjalankannya dari
Menu Start, pilih menu Command, dan pilih Microsoft Visual Basic 6.0 dan akhirnya
Microsoft Visual Basic 6.0.

Gambar 1-1. Mengaktifkan IDE Visual Basic 6.0

Catatan : Seperti aplikasi Windows umumnya, anda dapat juga mengaktifkan IDE Visual Basic dengan
melakukan open terhadap file yang berkaitan dengan Visual Basic, misalnya file *.vbp yang merupakan
file project dari Visual Basic.

1
Modul Visual Basic 6
[email protected]
Memilih jenis Project
Sesaat anda aktif di IDE Visual Basic, maka anda akan dihadapkan kepada suatu
pilihan terhadap jenis Project yang ingin anda buat sebagaimana yang ditunjukan oleh
Gambar 1-2.

Sebagai langkah awal dari proses belajar adalah memilih project Standard EXE.

Gambar 1-2. Dialog box New Project ditampilkan sesaat anda menjalankan IDE Visual
Basic 6.

Jendela IDE
IDE Visual Basic 6 menggunakan model MDI (Multiple Document Interface). Berikut ini
adalah gambar yang menunjukan bagian-bagian dan nama-nama jendela yang dapat
tampil pada IDE Visual Basic. Mungkin pada IDE anda hanya ditampilkan sebagian
jendela dibandingkan dengan Gambar 1-3 anda tidak perlu terkejut, karena penampilan
dari jendela-jendela tersebut dapat diatur dengan perintah pada menu View.

Sebagai langkah awal dari proses belajar, tidak semua jendela akan kita gunakan,
tetapi hanya beberapa yang penting, sedangkan yang lainnya bersifat khusus.

2
Modul Visual Basic 6
[email protected]

Gambar 1-3. IDE Visual Basic dengan jendela-jendela yang terbuka.

Sebagaimana dengan proses belajar ini, kita akan fokus pada beberapa jendela yang
penting terlebih dahulu sehingga konsentrasi tidak menjadi pecah, dan peserta belajar
menjadi bingung. Adapun jendela-jendela yang perlu anda perhatikan adalah sebagai
berikut :

• Menu Bar, digunakan untuk memilih tugas-tugas tertentu seperti menyimpan


project, membuka project, dll
• Main Toolbar, digunakan untuk melakukan tugas-tugas tertentu dengan cepat.
• Jendela Project, jendela ini berisi gambaran dari semua modul yang terdapat
dalam aplikasi anda. Anda dapat menggunakan icon Toggle Folders untuk
menampilkan modul-modul dalam jendela tersebut secara di group atau berurut
berdasarkan nama. Anda dapat menggunakan Ctrl+R untuk menampilkan
jendela project, ataupun menggunakan icon Project Explorer.
• Jendela Form Designer, jendela ini merupakan tempat anda untuk merancang
user interface dari aplikasi anda. Jadi jendela ini menyerupai kanvas bagi
seorang pelukis.
• Jendela Toolbox, jendela ini berisi komponen-komponen yang dapat anda
gunakan untuk mengembangkan user interface.
3
Modul Visual Basic 6
[email protected]
• Jendela Code, merupakan tempat bagi anda untuk menulis koding. Anda dapat
menampilkan jendela ini dengan menggunakan kombinasi Shift-F7.
• Jendela Properties, merupakan daftar properti-properti object yang sedang
terpilih. Sebagai contohnya anda dapat mengubah warna tulisan (foreground)
dan warna latarbelakang (background). Anda dapat menggunakan F4 untuk
menampilkan jendela properti.
• Jendela Color Palette, adalah fasilitas cepat untuk mengubah warna suatu
object.
• Jendela Form Layout, akan menunjukan bagaimana form bersangkutan
ditampilkan ketika runtime.

Jika jendela-jendela tersebut tidak ada, anda dapat memunculkannya dengan Menu
View dan pilih :

• Project Explorer (Ctrl+R)


• Properties Windows (F4)
• Form Layout Windows
• Property Pages (Shift+F4)
• Toolbox
• Color Pallete
• Toolbars

Toolbox
Jendela Toolbox merupakan jendela yang sangat penting bagi anda. Dari jendela ini
anda dapat mengambil komponen-komponen (object) yang akan ditanamkan pada form
untuk membentuk user interface.

4
Modul Visual Basic 6
[email protected]
Gambar 1-3. Toolbox Visual Basic 6 dengan semua kontrol intrinsic.

Adapun secara garis besar fungsi dari masing-masing intrinsic kontrol tersebut adalah
sebagai berikut :

• Pointer bukan merupakan suatu kontrol; gunakan icon ini ketika anda ingin
memilih kontrol yang sudah berada pada form.
• PictureBox adalah kontrol yang digunakan untuk menampilkan image dengan
format: BMP, DIB (bitmap), ICO (icon), CUR (cursor), WMF (metafile), EMF
(enhanced metafile), GIF, dan JPEG.
• Label adalah kontrol yang digunakan untuk menampilkan teks yang tidak dapat
diperbaiki oleh pemakai.
• TextBox adalah kontrol yang mengandung string yang dapat diperbaiki oleh
pemakai, dapat berupa satu baris tunggal, atau banyak baris.
• Frame adalah kontrol yang digunakan sebagai kontainer bagi kontrol lainnya.
• CommandButton merupakan kontrol hampir ditemukan pada setiap form, dan
digunakan untuk membangkitkan event proses tertentu ketika pemakai
melakukan klik padanya.
• CheckBox digunakan untuk pilihan yang isinya bernilai yes/no, true/false.
• OptionButton sering digunakan lebih dari satu sebagai pilihan terhadap
beberapa option yang hanya dapat dipilih satu.
• ListBox mengandung sejumlah item, dan user dapat memilih lebih dari satu
(bergantung pada property MultiSelect).
• ComboBox merupakan konbinasi dari TextBox dan suatu ListBox dimana
pemasukkan data dapat dilakukan dengan pengetikkan maupun pemilihan.
• HScrollBar dan VScrollBar digunakan untuk membentuk scrollbar berdiri
sendiri.
• Timer digunakan untuk proses background yang diaktifkan berdasarkan interval
waktu tertentu. Merupakan kontrol non-visual.
• DriveListBox, DirListBox, dan FileListBox sering digunakan untuk membentuk
dialog box yang berkaitan dengan file.
• Shape dan Line digunakan untuk menampilkan bentuk seperti garis, persegi,
bulatan, oval.
• Image berfungsi menyerupai image box, tetapi tidak dapat digunakan sebagai
kontainer bagi kontrol lainnya. Sesuatu yang perlu diketahui bahwa kontrol
image menggunakan resource yang lebih kecil dibandingkan dengan PictureBox
• Data digunakan untuk data binding
• OLE dapat digunakan sebagai tempat bagi program eksternal seperti Microsoft
Excel, Word, dll.

Mengatur Lingkungan Kerja Visual Basic


Pengaturan IDE Visual Basic dapat dilakukan dengan menu Tools, Option, pengaturan
dapat dilakukan sesuai dengan selera dan kebiasaan programmer sehingga dapat
bekerja dengan baik dan efektif. Mulai Visual Basic 5.0, IDE Visual Basic
memperkenalkan MDI Developement Environment, dan beberapa hal dapat diatur
dengan menggunakan menu Tools, Option adalah sebagai berikut :

5
Modul Visual Basic 6
[email protected]

• Mengatur Editor

• Mengatur Format Editor

• Mengatur hal-hal yang General

6
Modul Visual Basic 6
[email protected]

• Mengatur Docking Jendela

• Mengatur Environment

7
Modul Visual Basic 6
[email protected]

• Mengatur SDI Development Environment atau MDI

8
Modul Visual Basic 6
[email protected]

Bahasa Visual Basic Aplication


Dasar dari pemrograman pada Visual Basic adalah VBA yang menggunakan dialek
Basic. Bagi anda yang pernah belajar bahasa Basic, tidak akan sulit untuk belajar VBA.

Type Variabel
Dibandingkan dengan type data yang terdapat pada bahasa basic, maka pada VBA,
type data yang disediakan lebih banyak, seperti type Currency, Decimal, Object, dan
Variant.. Variant merupakan type variabel yang istimewa, karena dapat berubah dari
satu type ke type yang lain, sesuai dengan evaluasi ekspresi oleh Visual Basic.

Ketepatan pemilihan type variabel akan sangat menentukan pemakaian resources oleh
aplikasi yang dihasilkan, adalah tugas programmer untuk memilih type yang sesuai
untuk menghasilkan program yang efisien dan berperfomance tinggi.

Type Data Ukuran Storage Jangkuan


Byte 1 byte 0 s/d 255
Boolean 2 byte True atau False
Integer 2 byte -32,768 s/d 32767
Long 4 byte -2,147,483,648 s/d 2,147,483,647
-3.402823E38 s/d -1.401298E-45 (-)
Single 4 byte
1.401298E-45 s/d 3.402823E38 (+)
-1.79769313486232E308 s/d -4.94065645841247E-
Double 8 byte
324 (-)
-922,337,203,685,477.5808 s/d
Currency 8 byte
922,337,203,685,477.5807
Decimal 14 byte +/-79,228,162,514,264,337,593,543,950,335
Date 8 byte 1 Januari 100 s/d 31 Desember 9999
Object 4 byte Mengacu pada objek tertentu
String (panjang 10 byte + panjang
0 sampai lebih kurang 2 milyar
variabel) string
String (panjang panjang dari
1 sampai lebih kurang 65,400
tetap) string
Variant (dengan
16 byte Sembarang angka sampai jangkauan jenis Double
angka)
Variant (dengan 22 byte + panjang
Sama dengan jangkauan variabel String
karakter) string

Tabel 1-1. Type variabel, pemakaian storage dan jangkauan masing-masing

Operator Pada Visual Basic dan urutan operasinya


Visual basic meyediakan operator aritmatika, komparasi dan logika, salah satu hal yang
harus dipahami oleh programmer adalah tata urutan operasi dari masing-masing
operator tersebut sehingga mampu membuat ekspresi yang akan menghasilkan nilai
yang benar, Tabel 1-2, menunjukkan operator dan urutan operasinya dari atas
kebawah.

9
Modul Visual Basic 6
[email protected]
Contoh :

A=1+2*3 'Akan menghasilkan 7

B = (1 + 2) * 3 'Akan menghasilkan 9

Aritmatika Komparasi Logika


Pangkat (^) Sama (=) Not
Negatif (-) Tidak sama (<>) And
Kali dan Bagi (*, /) Kurang dari (<) Or
Pembagian bulat (\) Lebih dari (>) Xor
Sisa Bagi (Mod) Kurang dari atau sama (<=) Eqv
Tambah dan Kurang (+,-) Lebih dari atau sama (>=) Imp
Pengabungan String (&) Like

Tabel 1-2. Operator pada Visual Basic dan urutan operasi dari atas ke bawah

Operator Like

Salaj satu operator yang menarik untuk dibahas adalah operator like, Operator
digunakan untuk operasi pencocokan pola pada string yang akan sangat membantu
programmer.

Syntax :

result = string Like pattern

Karakter dalam pola Penyamaan dalam string


? Sembarang karakter tunggal
* Nol atau lebih karakter
# Sembarang digit tunggal (0-9)
[charlist] Sembarang karakter yang berada dalam charlist
[!charlist] Sembarang karakter yang tidak berada dalam charlist

Tabel 1-3. Character dalam pencocokan pola pada operator Like

Contoh :

• MyCheck = "aBBBa" Like "a*a" '


Returns True.
• MyCheck = "F" Like "[A-Z]" '
Returns True.
• MyCheck = "F" Like "[!A-Z]" '
Returns False.
• MyCheck = "a2a" Like "a#a" '
Returns True.
• MyCheck = "aM5b" Like "a[L-P]#[!c-e]" ' Returns
True.
• MyCheck = "BAT123khg" Like "B?T*" '
Returns True.
10
Modul Visual Basic 6
[email protected]
• MyCheck = "CAT123khg" Like "B?T*"

Deklarasi Variabel
Visual Basic memungkinkan kita untuk menggunakan variabel tanpa deklarasi. Tetapi
hal ini adalah kurang baik untuk program yang terstruktur dan menghindari kesalahan
pengolahan yang diakibatkan oleh kesalahan dalam pengetikkan nama variabel.

Agar setiap variabel yang digunakan harus dideklarasikan, dapat digunakan perintah :

Option Explicit

Pada setiap awal module, atau pada menu Tools, pilih Option, pilih tab Editor, buat
tanda check pada Require Variable Declaration.

Deklarasi variabel pada Visual Basic dapat dilakukan dengan Keyword berikut :

Keyword Digunakan pada


Public Berlaku pada level modul
Private Berlaku pada level modul
Dim Berlaku pada level modul dan level procedure
Static Berlaku pada level procedure

Tabel 1-4. Keyword pada deklarasi variabel

Syntax :

<keyword> NamaVariabel [As TypeVariabel]

Latihan 1
Judul : Mengenal IDE Visual Basic

Petunjuk, sebaiknya lembar latihan ini anda cetak ke printer.

1. Aktifkan IDE Visual Basic anda dengan memilih Start, kemudian Programs,
kemudian Microsoft Visual Basic 6, dan Microsoft Visual Basic 6.

2. Pada dialog box New Project, pilihlah Standard EXE, kemudian klik pada Open

11
Modul Visual Basic 6
[email protected]

3. Pada hadapan anda akan muncul IDE Visual Basic, dan kenali masing-masing
bagian berikut :

• Menu Bar
• Main Toolbar
• Jendela Toolbox
• Jendela Form
• Jendela Project Explorer
• Jendela Properties

12
Modul Visual Basic 6
[email protected]
4. Sekarang Perhatikan Jendela Toolbox, dan kenali kontrol-kontrol berikut :

• Pointer
• PictureBox
• Label
• Textbox
• Frame
• CommandButton
• Checkbox
• OptionButton
• Combobox
• Listbox

• Image

5. Sekarang Perhatikan Jendela Project Explorer

Perhatikan Icon-icon berikut :


Icon Fungsi
View Code
View Object
Toggle Forder

Lakukan klik pada Form1 (Form1), dan klik pada icon View Code, maka akan
ditampilkan Jendela Code

Lakukan klik pada icon View Object, maka akan ditampilkan Form1

13
Modul Visual Basic 6
[email protected]

6. Periksalah setting IDE Visual Basic, dan aktifkan hal-hal berikut pada menu Tools,
Option :

• Auto Syntax Check, secara otomatis memeriksa kebenaran pengetikan program.


• Require Variable Declaration, secara otomatis menambahkan perintah Option
Explicit pada form dan module.
• Auto List Member, secara otomatis menampilkan syntax penulisan perintah dan
fungsi

7. Keluar dari IDE Visual Basic, dengan memilih menu File, pilih Exit, atau menekan
Alt+Q

Latihan 2
Judul : Project anda yang pertama

Petunjuk, sebaiknya lembar latihan ini anda cetak ke printer.

1. Aktifkan IDE Visual Basic dan pilih Standard EXE.


14
Modul Visual Basic 6
[email protected]
2. Pada form1 tanamkan kontrol label (Label1, Label2, Label3) dan kontrol text (Text1,
Text2, Text3), serta CommandButton (Command1 dan Command2)

Caranya :

Pada jendela toolbox, klik pada kontrol


label, kemudian gambarkan pada
Form1, lakukan hal sama untuk Label2
dan Label3, demikian juga untuk
Textbox dan CommandButton.

Anda dapat juga melakukan dengan


cara double klik pada kontrol label pada
toolbox dan kemudian dengan drag &
drop memindahkan posisinya pada
form1

Catatan : Kontrol, kontrol tersebut ditanamkan satu per satu, dan jangan menggunakan
cara Copy dan Paste karena akan menyebabkan kontrol-kontrol tersebut menjadi
kontrol array.

3. Aturlah properti-properti dari masing-masing kontrol sehingga menjadi sebagai


berikut :

Caranya :

Klik pada form1, kemudian pada jendela


properti cari baris name, kemudian ketik
nilainya MyForm, kemudian cari baris
caption, kemudian ketik nilainya menjadi
Program Menghitung Luas Persegi.

Klik pada Label1, kemudian pada jendela


properti cari baris caption, kemudian ketik
nilainya &Panjang. Lakukan juga untuk
kontrol lainnya berdasarkan tabel berikut.

Catatan : Untuk menampilkan jendela


properties, anda dapat menggunakan F4

Objek/Kontrol Properti Nilai


Myform
Name
Form1 Program Menghitung Luas
Caption
Persegi
Label1 Caption &Panjang
Label2 Caption &Lebar
Label3 Caption Lu&as
Name txtPanjang
Text1
Text ""
Name txtLebar
Text2
Text ""
Name txtLuas
Text3
Text ""
Command1 Name cmdHitung
Caption &Hitung
15
Modul Visual Basic 6
[email protected]

Name cmdSelesai
Command2
Caption &Selesai

Catatan : tanda ampersand & pada Visual Basic digunakan sebagai penanda kunci
akses penekanan Alt oleh pemakai.

4. Lakukan koding untuk menghitung Luas, ketika pemakai melakukan klik atau Alt H,
pada cmdHitung

Caranya :

Lakukan double klik pada kontrol cmdHitung, sehingga akan muncul jendela koding dan
procedure event cmdHitung_Click :

Private Sub cmdHitung_Click()

End Sub

procedure event, adalah subrutin yang akan dibangkitkan oleh aplikasi, ketika pemakai
melakukan klik pada kontrol cmdHitung. Perintah-perintah yang anda ketik diantara Sub dan
End Sub akan dijalankan.

Cara lain :

Tekan F7 untuk menampilkan jendela koding, kemudian pilih nama kontrol dari daftar kontrol
seperti gambar berikut :

16
Modul Visual Basic 6
[email protected]

kemudian pilih daftar kejadian (event) seperti yang ditunjukkan pada gambar berikut :

Catatan : sebaiknya anda senantiasa menggunakan salah satu cara diatas untuk melakukan
koding untuk menjamin kebenaran penulisan pada masing-masing event procedure.

Lakukan juga koding untuk cmdSelesai :

Private Sub cmdSelesai_Click()


Unload Me
End Sub

5. Tampilkan kembali MyForm dengan klik View Object pada jendela Project Explorer

6. Menyimpan project :

Buatlah bernama C:\VB2

Klik pada icon save atau gunakan menu File, dan pilih

Pilih Save in pada folder Vb2, dan nama form MyForm.frm, dan klik Save

17
Modul Visual Basic 6
[email protected]

Simpan project sebagai MyProject1.vbp

Pada proses penyimpanan diatas akan menghasilkan file berikut : MyForm.frm,


MyProject1.vbp, dan MyProject1.vbw. Coba periksa ini folder C:\VB2

7. Jalankan program anda dengan klik pada , atau ,


atau tekan pada tombol F5.

9. Tutup aplikasi Visual Basic anda.

10. Atur tab index masing-masing kontrol, dimana Label1 (0), txtPanjang (1), Label2
(2), txtLebar (3), Label3 (4), txtLuas(5), cmdHitung (6), cmdSelesai (7).

Caranya :

Klik pada cmdSelesai, atau properti tabindexnya menjadi 0, kemudian klik pada cmdHitung, atur
properti indexnya menjadi 0, kemudian txtLuas, Label3, txtLebar, Label2, txtPanjang, Label1,
masing-masing menjadi 0, sekarang semua kontrol telah berurut sesuai dengan yang kita
inginkan. (Ini adalah salah satu trik untuk menomori tabindex dengan mudah)

11. Jalankan kembali program anda, sekarang coba tekan Alt+P, Alt+L, sekarang anda
dapat mengaktifkan textbox Panjang dengan Alt+H (akses key dari Label1), dst.

18
Modul Visual Basic 6
[email protected]
12. Atur properti project anda, dengan menu Project, kemudian Project Properties, akan
muncul dialog sebagai berikut

13. Simpan project anda, dan keluar dari Visual Basic

14. Aktifkan kembali Visual Basic anda, dan klik pada tab Recent, dan pilih kembali
MyProject1.

Latihan 3
Judul : Memahami operator pada VBA
Petunjuk, sebaiknya lembar latihan ini anda cetak ke printer.

19
Modul Visual Basic 6
[email protected]
1. Aktifkan jendela Immedietly dengan menggunakan menu View, Immedietly Window
atau menekan Ctrl + G

dan cobalah beberapa ekspresi berikut :

• ?1+2
• ? "1" + "2"
• ? 1 + "2"
• ? "1" + 2
• ?1&2
• ? "1" & "2"
• ? "1" & 2

Catatan : Operator + dapat digunakan untuk penjumlahan maupun pengabungan string,


tetapi untuk pengabungan string lebih disarankan untuk menggunakan Operator &.

• ? #18 May 2001# + 31


• ? #19 June 2001# - 1
• ? #19 June 2001# - #17 June 2001#
• ? #05/18/2001# + 31
• ? #06/19/2001# - 1
• ? #06/19/2001# - #06/17/2001#
• ? #01:01:01# + 0.25 'Mengapa ?
• ? #06:01:01# - 0.25
• ? #06:01:01# - #05:30:30#

Catatan : Pada Visual Basic data date/time ditulis dengan #tanggal#, Operator +
digunakan untuk menambah sejumlah hari, Operator - digunakan untuk mengurangi
sejumlah hari atau selisih hari.

• ? True + 0
• ? True + "0"
• ? False
• ? False + 0
• ? True = -1
• ? False = 0

Catatan : Pada Visual Basic nilai True adalah sama dengan -1, dan nilai False adalah 0

• ? "indoprog" like "i*"


• ? "Indoprog" like "i*"
• ? "Indoprog" like "[iI]*"
• ? "a" like "[a-z]"
• ? "A" like "[!a-z]"

20
Modul Visual Basic 6
[email protected]
• ? "A1" like "A?"
• ? "A1" like "A#"
• ? "Aa" like "A#"

Lengkapilah daftar berikut :

a c a and b a or b a xor b a eqv b a imp b


True True
True False
False True
False False

Dengan mencoba satu persatu, misalnya :

• ? True and True


• dst

• ? 1 and 3 'Mengapa ?
• ? 1 or 4
• ? 2 xor 2

Catatan : Operator and, or, xor, eqv, imp, dan not dapat digunakan untuk operasi
bitwise

2. Tanamkan sebuah kontrol CommandButton pada Form1, dan atau properti name :
cmdCoba, dan caption : &Coba, seperti berikut ini :

Lakukan koding pada event cmdCoba_Click, sebagai berikut :

Private Sub MyCoba_Click()


Dim a As Integer
Dim b As Integer
Dim c As String
Dim d As String
a = 1.2 + 2.2 'Berapa nilai a
b = 1.3 + 2.3 'Berapa nilai b
c = "100" 'Berapa nilai c
21
Modul Visual Basic 6
[email protected]
d = c + 200 'Berapa nilai d
Print a
Print b
Print c
Print d
End Sub

Jalankan program, dan klik pada tombol Coba, dan perhatikan hasilnya, apakah sesuai
dengan perkiraan anda?

Memahami Objek pada Visual Basic


Apa yang dimaksud dengan Objek
Objek merupakan suatu kombinasi dari kode dan data yang dapat diperlakukan sebagai
satu kesatuan. Suatu Objek dapat merupakan bagian dari aplikasi seperti suatu kontrol
atau suatu form. Secara keseluruhan dari aplikasi dapat juga berupa suatu objek.

Dari mana datangnya Objek


Setiap objek pada Visual Basic didefinisikan oleh suatu class. Untuk memahami
hubungan antara objek dengan class-nya, perhatikan contoh berikut :

• Kontrol-kontrol yang barada pada jendela Toolbox pada Visual Basic merupakan
class-class. Objek tersebut dikenal sebagai kontrol tidak akan ada sampai anda
menanamkannya pada suatu form. Ketika anda menanamkan suatu kontrol,
anda telah membuat suatu duplikasi atau instance dari class kontrol tersebut.
• Form dimana anda bekerja pada saat desain adalah suatu class. Pada saat run
time, Visual Basic menciptakan suatu instance dari class form.

Gambar 2-1, kontrol Text1 yang ditanam diatas form berasal dari class Textbox

Misalnya anda menamkan sebuah textbox diatas form1, coba perhatikan jendela
properti kontrol tersebut akan menampilkan Text1 (nama dari kontrol textbox tersebut)
dan Textbox (nama dari class kontrol tersebut).
22
Modul Visual Basic 6
[email protected]

Gambar 2-2, jendela property menunjukkan nama kontrol dan jenis Class-nya

Semua objek merupakan duplikasi dari class mereka. Sesaat setelah menjadi objek
berdiri sendiri, masing-masing dapat memiliki properti yang berbeda-beda.

Misalnya anda menanam tiga buah command button pada suatu form, masing-masing
command button merupakan instance dari class CommandButton sehingga memiliki
sejumlah karakteristik dan kemampuan (properti-properti, metode-metode, dan event-
event) yang sama, dimana yang terdefinisi pada class-nya. Tetapi, masing-masing
dapat memiliki Name, Caption, BackColor, Style yang berbeda sesuai dengan
pengaturan pada masing-masing properti.

Gambar 2-3, masing-masing kontrol dapat memiliki properti masing-masing

Bekerja dengan objek


Objek-objek Visual Basic memiliki properti-properti, metode-metode, dan event-event.
Pada Visual Basic, suatu data dari objek (setting dan atribut) disebut sebagai properti,
sedangkan berbagai subrutin yang dapat beroperasi pada objek tersebut disebut
sebagai metodenya. Dan suatu event adalah aksi yang dikenali oleh suatu objek,
seperti klik pada mouse atau penekanan tombol, sehingga anda dapat menulis kode
untuk menangani event tersebut.

Mengatur Nilai properti

Anda dapat langsung mengatur nilai properti suatu kontrol pada jendela properti,
maupun pada saat runtime dengan menggunakan bentuk penulisan berikut :

Objek.properti = ekspresi

Contoh :

23
Modul Visual Basic 6
[email protected]

Gambar 2-4, pengaturan properti dapat dilakukan melalui jendela properti pada waktu
desain

atau

Private Sub Form_Load()


MyForm.Caption = "Pemakai Telepon"
End Sub

Mengambil nilai dari Properti

Anda dapat mengambil nilai dari properti suatu objek dengan penulisan sebagai
berikut :

Variabel = Objek.properti

Contoh :

Private Sub cmdProses_Click()


Nama = txtNama.Text
End Sub

Menggunakan Metode dalam Kode

Ketika anda mengunakan suatu metode dalam kode anda, hal tersebut tergantung
kepada bagaimana kaitan perintah dan berapa argumen yang diperlukan, dan apakah
metode tersebut mengembalikan suatu nilai. Ketika suatu metode tidak membutuhkan
argumen anda dapat menulisnya sebagai berikut ::

Objek.Metode

Contoh :

Private Sub cmdBuka_Click()


frmPemakai.show
End Sub

Beberapa properti yang umum

Berikut ini akan dibahas beberapa properti yang umum yang hampir terdapat pada
semua intrinsic kontrol pada Visual Basic.

24
Modul Visual Basic 6
[email protected]
Properti Left, Top, Width dan Height

Semua objek yang visible memiliki properti yang menentukan letak dan ukurannya. Nilai
properti Left dan Top sifatnya relatif terhadap kontainernya (misalnya suatu textbox
yang ditanamkan diatas form, maka form tersebut disebut sebagai kontainer bagi
textbox tersebut), sedangkan Width dan Height menentukan ukuran dari objek tersebut.

Gambar 2-5, Form1 merupakan kontainer bagi Text1

Nb. Pada defaultnya nilai properti ini dinyatakan dalam twips ( 1 inch = 1440 twips; 1 cm
= 576 twips)

Perhatian : Properti Width dan Height pada control Combobox sifatnya readonly.

Properti Forecolor dan BackColor

Umumnya objek yang visible memiliki properti Forecolor dan Backcolor, yang
mempengaruhi warna tulisan dan warna latarbelakang, tetapi beberapa diantaranya
tidak ada (misalnya control scroll-bars), pada command button tidak terdapat properti
Forecolor, dan Backcolornya hanya berfungsi jika anda menganti properti style menjadi
1 - Graphical.

Gambar 2-6, form dengan pemakaian backcolor dan forecolor

Nb. Setting properti Backcolor menjadi tidak berfungsi jika anda menset properti
BackStyle menjadi 0 - transparent.
25
Modul Visual Basic 6
[email protected]

Gambar 2-7, pengaturan Backcolor dan ForeColor melalui jendela properti

Ketika anda menentukan nilai untuk properti ini, anda dapat menggunakan suatu warna
standard, atau warna custom (saya menyarankan anda untuk menggunakan warna
standard untuk menjaga nilai rasa pemakai integrasi dengan sistem operasi)

Properti Font

Pada waktu desain, anda dapat menentukan properti Font dengan dialog box, tetapi
pada saat runtime, hal tersebut harus dilakukan dengan properti Name, Size, Bold,
Italic, Underline, and Strikethrough, karena sebenarnya Font adalah suatu objek
campuran.

Contoh :

Text1.Font.Name = "Tahoma"
Text1.Font.Size = 12
Text1.Font.Bold = True
Text1.Font.Underline = True

Properti Caption dan Text

Caption adalah tulisan yang tampil dalam suatu control (atau title pada objek form) yang
mana pemakai tidak dapat melakukan modifikasi langsung (control Label,
CommandButton, Checkbox, Optionbutton, Data, dan Frame), sebaliknya Text adalah
tulisan yang dapat dimodifikasi oleh pemakai (control Textbox, Listbox dan Combobox).

26
Modul Visual Basic 6
[email protected]

Gambar 2-8, pengaturan Font melalui dialog box Font dari jendela properti

Nb. Pada properti Caption, kita dapat menggunakan tanda & (ampersand) untuk
menyatakan hotkey bagi control tersebut. Properti Text dapat diabaikan, karena
merupakan properti default bagi suatu control.

Contoh :

' Kedua perintah ini adalah sama


Text2.Text = Text1.Text
Text2 = Text1 'tanpa properti text

Properti Enabled dan Visible

Pada defaultnya semua control dan form adalah Enabled dan Visible. Anda dapat
menyembunyikan suatu kontrol dengan menggunakan properti Visible = False. Kontrol
yang properti Enabled = False tidak dapat diakses oleh pemakai, tetapi dapat diakses
secara kode.

Programmer dapat juga menggunakan properti Locked = True untuk membuat suatu
kontrol read only.

Properti TabStop dan TabIndex

Suatu kontrol yang dapat menerima fokus input memiliki properti TabStop. Kontrol yang
memiliki properti TabStop juga memiliki properti TabIndex. Properti TabStop
menentukan apakah suatu kontrol dapat menerima fokus pada penekanan tombol Tab
oleh pemakai, defaultnya adalah true, sedangkan properti TabIndex menentukan urutan
fokus pada saat pemakai menekan Tab.

Properti MousePointer dan MouseIcon

Properti ini akan menentukan bentuk kursor mouse ketika berada diatas kontrol
tersebut. Windows memperbolehkan kita mengatur tampilan mouse untuk setiap form
dan kontrol dengan mengikuti aturan berikut :

27
Modul Visual Basic 6
[email protected]
• Jika properti Screen.MousePointer di set ke nilai yang bukan 0-vbDefault, kursor
mouse akan mengikuti nilai ini, tetapi ketika mouse berada diatas aplikasi lain
(atau pada desktop), tampilan kursor akan bergantung kepada kondisi aplikasi
bersangkutan, bukan pada aplikasi anda.
• Jika Screen.MousePointer adalah 0 dan kursor mouse berada diatas suatu
kontrol, Visual Basic akan memeriksa nilai properti MousePointer kontrol
tersebut; jika nilainya bukan 0-vbDefault, kursor mouse akan di set ke nilai
tersebut.
• Jika Screen.MousePointer adalah 0 dan mouse berada diatas permukaan suatu
form atau berada diatas kontrol yang properti MousePointer adalah 0, Visual
Basic akan menggunakan nilai yang tersimpan pada properti Mousepointer pada
form.

Properti MouseIcon dapat digunakan untuk menampilkan bentuk pointer mouse sesuai
dengan keinginan pemakai, tetapi sebelumnya properti MouseIcon harus di set ke 99-
vbCustom, dan kemudian set suatu icon pada properti MouseIcon.

Gambar 2-9, pengaturan Mouse Pointer dan Mouse Pointer melalui jendela properti

Properti Tag

Semua kontrol mendukung properti Tag, tanpa kecuali, karena properti ini disediakan
oleh Visual Basic, bukan oleh kontrol. Properti Tag digunakan sebagai kontainer untuk
bagi data dari kontrol yang anda ingin simpan (misalnya anda dapat mengunakannya
untuk menyimpan nilai awal dari textbox, sehingga pemakai dapat melakukan Undo
dengan mengembalikan nilai awal tersebut dari properti Tag).

Beberapa Metode-metode umum

Berikut ini akan dibahas beberapa metode yang umum yang hampir terdapat pada
semua intrinsic kontrol pada Visual Basic.

28
Modul Visual Basic 6
[email protected]
Metode Move

Jika suatu kontrol mendukung properti Left, Top, Width, dan Height, juga mendukung
metode Move, dengannya dimana anda dapat mengubah beberapa atau semua
properti dalam satu operasi tunggal. Contoh berikut mengubah tiga properti: Left, Top,
dan Width.

Contoh :

'Mendoublekan lebar form, dan memindahkan ke sudut kiri atas layar


'Syntaxnya adalah: Move Left, Top, Width, Height.

Form1.Move 0, 0, Form1.Width * 2

Metode Refresh

Metode refresh menyebabkan suatu form akan digambar ulang. Pada dasarnya Visual
Basic otomatis memanggil metode ini setiap ada kesempatan, tetapi anda dapat
menggunakannya untuk mengupdate tampilan seketika.

Contoh :

For n = 1000 To 1 Step -1


Label1.Caption = CStr(i)
Label1.Refresh ' Mengupdate label seketika.
Next

Metode SetFocus

Metode ini memindahkan fokus input ke kontrol tertentu. Sesuatu masalah yang sering
terjadi adalah metode ini akan menyebabkan error ketika diterapkan pada kontrol yang
sedang di Disable atau dalam keadaan Invisible. Untuk menhindari hal ini, metode
SetFocus jangan digunakan pada bagian Form Load.

Contoh :

Private Sub cmdAdd_Click()


Aksi = flAdd
Call Buka
Call Kosong
txtCCode.SetFocus 'Memindahkan fokus ke kontrol txtCCode
End Sub

Metode ZOrder

Metode ZOrder memberikan efek tampilan kontrol yang saling menimpa. Anda
menggunakan metode ini untuk memindahkan kontrol keatas kontrol yang lain.
Gunakan argumen satu untuk sebaliknya.

Contoh :

Label1.ZOrder 'Memindahkan ke atas


Label1.ZOrder 1 'Memindahkan ke bawah

29
Modul Visual Basic 6
[email protected]
Pada saat design, anda dapat menggunakan Ctrl+J untuk memindahkan kontrol ke
depan, dan Ctrl+K untuk memindahkan form ke belakang.

Gambar 2-10, contoh pemakaian metode ZOrder

Beberapa Event yang umum

Berikut ini akan dibahas beberapa metode yang umum yang hampir terdapat pada
semua intrinsic kontrol pada Visual Basic.

Event Click dan DblClick

Event click terjadi ketika pemakai melakukan klik pada tombol kiri mouse. demikian juga
Event DblClick terjadi karena pemakai melakukan klik dua kali.

Private Sub cmdUpdate_Click()


JlhRec = JlhRec + 1
DatPemakai.CCode = txtCCode.Text
DatPemakai.Nama = txtNama.Text
DatPemakai.Ekstension = txtEkstension.Text
DatPemakai.Local = optLocal.Value
DatPemakai.SLJJ = optSLJJ.Value
DatPemakai.SLI = optSLI.Value
Put #1, JlhRec, DatPemakai
Posisi = JlhRec
End Sub

Pada kontrol-kontrol seperti Checkbox dan OptionButton, event Click juga dibangkitkan
kalau terjadi perubahan nilai properti Value secara koding.

ListBox dan Combobox juga melakukan hal yang sama kalau properti ListIndex-nya
berubah.

Adalah penting untuk menghindari pemakaian Event Click dan DblClick pada satu
kontrol yang sama, karena tidak menjamin Event DblClick dibangkitkan setelah Event
Click terjadi.

30
Modul Visual Basic 6
[email protected]
Event Change

Event Change dibangkitkan ketika isi dari suatu kontrol berubah. Tetapi pada
CheckBox, dan OptionButton Event Click yang dibangkitkan.

Pada kontrol TextBox dan ComboBox dibangkitkan ketika pemakai mengetik sesuatu.
(Tetapi pada kontrol ComboBox, kontrol membangkitkan event Click kalau pemakai
memilih item dari list dari pada mengetiknya). Pada kontrol Scroll bar event Change
terjadi ketika pemakai melakukan klik baik pada panah maupun scroll box. Event
Change juga terdapat pada PictureBox, DriveListBox, dan kontrol DirListBox.

Event Change juga dibangkitan oleh isi kontrol yang diubah melalui koding.

Event GotFocus dan LostFocus

GotFocus dibangkitkan ketika kontrol menerima fokus, dan LostFocus dibangkitkan


ketika fokus meninggalkannya dan beralih ke kontrol lain. Pada awalnya event ini
banyak digunakan untuk mekanisme validasi ketika kontrol kehilangan fokus. Pada
Visual Basic 6 telah diperkenalkan suatu event Validate event, yang lebih sesuai untuk
masalah yang sama.

Event KeyPress, KeyDown, dan KeyUp

Event-event ini dibangkitkan ketika pemakai menekan tombol pada keyboard pada
kontrol yang memiliki fokus. Urutan eventnya adalah : KeyDown (ketika pemakai
menekan tombol), KeyPress (Visual Basic menterjemahkan tombol ke numerik ANSI
code), dan KeyUp (ketika pemakai melepas tombol). Hanya tombol yang berkaitan
dengan tombol kontrol (Ctrl+x, BackSpace, Enter, dan Escape) serta karakter yang
dapat dicetak membangkitkan event KeyPress event. Tombol lainnya--termasuk tombol
panah, tombol fungsi, kombinasi Alt+x, tidak menyebabkan event ini, hanay
membangkitkan event KeyDown dan KeyUp.

Event KeyPress melewatkan ANSI code dari tombol yang ditekan. Anda dapat
memanipulasinya untuk keperluan tertentu.

Objek Browser
Anda dapat melihat properti-properti, metode-metode, dan event-event pada suatu
objek dengan menggunakan fasilitas Objek Browser yang dapat diaktifkan dengan
menggunakan menu View, Object Browser.

31
Modul Visual Basic 6
[email protected]

Gambar 2-11, jendela objek browser untuk melihat isi suatu objek

Mengenal Form
Form merupakan objek pertama yang anda hadapi begitu membuat suatu project dan
merupakan tempat kita membentuk user interface. Pada form kita dapat menanamkan
berbagai Kontrol seperti label, textbox, combobox, listbox, optionbutton, dll.

Gambar 2-12, user interface form dengan berbagai kontrol diatasnya

Untuk memudah anda dalam menempatkan kontrol-kontrol pada form, periksalah


option seperti Show Grid dan ukurannya, serta Align Control to Grid, pengaturan ini
dapat dilakukan dengan menu Tools, Option, kemudian memilih tab General.

32
Modul Visual Basic 6
[email protected]

Gambar 2-13, jendela option untuk pengaturan form

Untuk memudahkan anda mengatur ukuran, jarak antar kontrol maupun pemerataan
kontrol-kontrol yang anda tempatkan diatas form, anda dapat menggunakan kelompok
menu format

Gambar 2-14, menu format

Struktur kode pada Form


Memahami struktur kode pada jendela kode di suatu form akan sangat membantu
programmer untuk menulis kode yang terstruktur. Adapun struktur kode pada form
dapat dibagi atas tiga bagian yaitu :

• Bagian General Declaration, bagian ini digunakan untuk deklarasi Option Explicit,
Option Base, Type, dan variabel yang dapat digunakan pada form level (dikenal
oleh semua subrutin pada form tersebut) baik pada tingkat Public maupun
Private. Bagian ini biasanya terletak pada bagian teratas pada jendela koding.

33
Modul Visual Basic 6
[email protected]

Gambar 2-15, bagian general declaration pada jendela koding form

• Bagian General Procedure, bagian ini merupakan subrutin maupun fungsi yang
dibuat oleh pemakai. Bagian ini ditandai dengan (General), dan nama subrutin.

Gambar 2-16, bagian general procedure pada jendela koding form

• Bagian Event Procedure, bagian ini merupakan subrutin yang digunakan untuk
menangani kejadian yang diakibatkan oleh aksi pemakai terhadap kontrol
tertentu. Ditandai dengan nama kontrol dan jenis eventnya.

34
Modul Visual Basic 6
[email protected]

Gambar 2-17, bagian event procedure pada jendela koding form

Beberapa Event, Metoda, dan Perintah pada Form


Supaya anda dapat bekerja baik dengan objek form, anda perlu mengetahui dan
mengerti Event-Event, Metode-Metode serta perintah yang berhubungan dengan
pemakaian form.

Event Initialize

Event ini terjadi pertama kali ketika Form dibuat dari Class-nya dan hanya sekali
selama keberadaan form tersebut, Event ini digunakan untuk menginisialisasi nilai awal
variabel.

Event Terminate

Event ini terjadi ketika objek Form akan dimusnahkan dari memori.

Event Load

Event ini terjadi ketika suatu form di Load. Pada Event procedure ini anda letakkan
statement yang digunakan untuk mengatur setting awal form anda, misalnya membuka
file, menginisialisasi nilai awal variabel, dan mengatur properti kontrol-kontrol pada
form.

Contoh :

Private Sub Form_Load()


Open "C:\Pemakai.Dat" For Random As #1 Len=Len(DatPemakai)
JlhRec = LOF(1) / Len(DatPemakai)
If JlhRec > 0 Then
Posisi = 1
Else
Posisi = 0
End If
35
Modul Visual Basic 6
[email protected]
Call Tampil
End Sub

Event QueryUnload

Event ini terjadi ketika suatu form akan tutup, dan dapat mempelajari bagaimana
pemakai menutup form tersebut dengan mempelajari parameter UnloadMode.

Contoh :

Private Sub Form_QueryUnload(Cancel As Integer, _


UnloadMode As Integer)
Select Case UnloadMode
Case vbFormControlMenu ' = 0
' From diclose oleh pemakai.
Case vbFormCode '=1
' Form diclose dengan kode.
Case vbAppWindows '=2
' Session windows berakhir.
Case vbAppTaskManager ' = 3
' Task manager mengakhiri program ini.
Case vbFormMDIForm '=4
' From ditutup oleh MDI.
Case vbFormOwner '=5
' From ditutup oleh Owner.
End Select
End Sub

Parameter Cancel dapat digunakan untuk menentukan apakah proses dilanjutkan ke


Event UnLoad atau tidak. (0 berarti proses dihentikan, 1 berarti proses dilanjutkan ke
Event Unload)

Event UnLoad

Event ini terjadi ketika suatu form di unload dengan menggunakan command Close
pada Control menu atau dengan statement UnLoad. Event ini terjadi setelah Event
QueryUnload. Anda dapat mengetikkan kode-kode untuk menutup file-file yang terbuka
pada Event ini.

Contoh :

Private Sub Form_Unload(Cancel As Integer)


Close #1
End Sub

Parameter Cancel dapat digunakan untuk menentukan apakah proses UnLoad


dilakukan atau tidak. (0 berarti proses UnLoad dilakukan, 1 berarti proses Unload
dibatalkan)

Contoh :

Private Sub Form_Unload(Cancel As Integer)


36
Modul Visual Basic 6
[email protected]
Dim nPil As Integer
nPil = MsgBox("Apakah Anda Yakin", vbYesNo)
If nPil = vbYes Then
Close #1
Cancel = 0
Else
Cancel = 1
End If
End Sub

Event Resize

Event ini terjadi ketika form pertama kali ditampilkan atau ukuran dari suatu object
berubah.

Contoh :

Private Sub Form_Resize ()


'Mengubah ukuran PictureBox menjadi sama dengan ukuran form yang diresize.
Picture1.Move 0,0, ScaleWidth, ScaleHeight
End Sub

Catatan :

ScaleWidth, properti yang mengembalikan nilai ukuran lebar interior dari suatu kontrol

ScaleHeight, properti yang mengembalikan nilai ukuran lebar interior dari suatu kontrol

Event Activate

Event Activate terjadi ketika suatu form menjadi jendela aktif, ketika user melakukan klik
pada form, atau menggunakan metode SHOW atau SETFOCUS.

Event DeActivate

Event DeActivate terjadi ketika suatu form menjadi jendela yang tidak aktif, dimana
ketika focus bergeser ke form lain. Event ini tidak terjadi pada saat UNLOAD.

Perintah Load

Melakukan Load Form, tetapi tidak membuatnya menjadi Visibel

Syntax :

Load form

Contoh :

Private Sub cmdLoad_Click()


Load Form2
End Sub

Metoda Show
37
Modul Visual Basic 6
[email protected]
Melakukan Load suatu Form, dan membuatnya menjadi Visible.

Syntax :

object.Show

Contoh :

Private Sub cmdShow_Click()


Form2.Show
End Sub

Metoda Hide

Menyembunyikan form, tetapi tidak melakukan unload

Syntax :

object.Hide

Contoh :

Private Sub cmdHide_Click()


Form2.Hide
End Sub

Perintah UnLoad

Melakukan UnLoad Form

Syntax :

UnLoad form

Contoh :

Private Sub cmdUnload_Click()


Unload Form2
End Sub

Urutan Event pada Form


Secara garis besar Event pada Form adalah sebagai berikut :

Initialize, hanya sekali yaitu ketika form pertama kali dibuat dari Class-nya

Load, Activate

Deactivate

Terminate, hanya sekali yaitu ketika form dimusnahkan dari memori.

38
Modul Visual Basic 6
[email protected]

Bahasa Visual Basic Aplication


Konvensi penamaan dalam Visual Basic

Ketika anda menulis Code Visual Basic, anda mendeklarasikan banyak elemen (Sub
dan Function procedures, variables, constants,dan lainnya). Nama dari procedure,
variabel, dan konstanta yang mana anda deklarasi pada Visual Basic harus mengikuti
petunjuk berikut :

• Harus dimulai dengan suatu Huruf


• Tidak dapat mengandung titik atau spesial karakter
• Tidak dapat lebih dari 255 huruf, nama dari control, forms, classes, dan
module tidak melebihi 40 karakter.
• Tidak dapat sama dengan keywords yang tercadang.

Keyword yang tercadang adalah kata yang Visual Basic gunakan sebagai bagian dari
bahasanya. Ini terdiri dari predefined statements (seperti If dan Loop), function (seperti
Len dan Abs), dan operator (seperti Or dan Mod).

Deklarasi Variabel

• Deklarasi variabel pada bagian deklarasi di suatu form, standard, atau class
module, dari pada dalam suatu procedure, membuat variabel itu berlaku
untuk semua procedure dalam module tersebut
• Deklarasi variabel dengan menggunakan keyword Public membuatnya
berlaku pada keseluruhan aplikasi anda.
• Deklarasi suatu variabel lokal dengan menggunakanan keyword Static akan
menyimpan nilainya ketika suatu procedure berakhir.

Deklarasi Implicit

Anda tidak perlu mendeklarasikan suatu variabel sebelum menggunakannya.

Deklarasi Explicit

Untuk mencegah kesalahan mengetik variabel, dan Visual Basic akan selalu
memberikan peringatan jika menemukan nama yang tidak dideklarasikan terlebih
dahulu sebagai suatu variabel.

Catatan :

Pernyataan Option Explicit hanya bekerja per-module, sehingga harus diletakkan pada
bagian deklarasi pada setiap form, dan class module yang mana anda ingin Visual
Basic memaksakan suatu explicit variabel deklarasi

Mengenal Struktur Kendali


Struktur kendali memungkinkan anda untuk mengatur jalannya program anda, Jika
membiarkan tanpa di periksa oleh statement control-flow, suatu logika program akan

39
Modul Visual Basic 6
[email protected]
berjalan dari kiri ke kanan dan dari atas kebawah. Hanya program yang sangat
sederhana dapat ditulis tanpa statement control-flow.

Struktur Keputusan

Struktur keputusan yang didukung oleh Visual Basic adalah sebagai berikut :

If...Then

Gunakan suatu struktur If...Then untuk menjalankan suatu pernyataan secara


kondisional. Anda dapat menggunakan syntax satu baris ataupun syntax banyak baris :

If kondisi Then pernyataan

atau

If kondisi Then
pernyataan-pernyataan
End If

Kondisi biasanya berupa suatu perbandingan, maupun ekspresi yang menghasilkan


nilai numerik. Visual Basic menginterpretasikan False sebagai nol (0), dan True sebagai
bukan nol.

If...Then...Else

Gunakan If…Then…Else untuk mendefinisikan beberapa blok pernyataan yang akan


dijalankan salah satu berdasarkan kondisi yang memenuhi syarat

If kondisi1 Then
[blok pernyataan-1]
[ElseIf kondisi2 Then
[blok pernyataan-2]] ...
[Else
[blok pernyataan-n]]

End If

Visual Basic awalnya akan mencoba kondisi1. Jika False, maka Visual Basic akan
memeriksa kondisi2, dan seterusnya sampai menemukan suatu kondisi True untuk
dijalankan blok pernyataannya.

Contoh :

If JlhRec > 0 Then


Posisi = 1
Else
Posisi = 0
End If

40
Modul Visual Basic 6
[email protected]
Select Case

Visual Basic menyediakan struktur Select Case sebagai suatu alternatif terhadap
If...Then...Else. Suatu Select Case statement memiliki kemampuan yang sama dengan
If…Then…Else…, tetapi membuat code lebih mudah dibaca.

Struktur Select Case bekerja dengan suatu percobaan tunggal yang hanya dievaluasi
satu kali pada bagian atas struktur. Visual Basic then membandingkan hasil ekspresi
dengan nilai pada setiap Case didalam struktur tersebut, jika ada yang sesuai, akan
dijalankan blok statement yang sesuai

Select Case ekspresiyangdicoba


[Case ekspresi1
[blokpernyataan-1]]
[Case ekspresi2
[blokpernyataan-2]]

[Case Else
[blokpernyataan-n]]

End Select

Latihan 1
Judul : Memahami urutan event, metoda, dan perintah pada Form

1. Tambahkan Form2 ke dalam project anda (caranya : Pada menu Project, pilih Add
Form), Kemudian tanamkan Command1 pada Form2, sehingga menjadi sebagai
berikut :

2. Aktifkan jendela koding Form2 dengan menekan F7, atau pada Menu View, pilih
Code, atau klik icon View Code pada jendela Project Explorer. Pada DropDownList
object, pilih Form, dan pada DropDownList procedure pilih Initialize.

41
Modul Visual Basic 6
[email protected]

Dan lakukan koding untuk Event Initialize untuk form2, sebagai berikut :

Private Sub Form_Initialize()


MsgBox "Ini adalah initialize form2"
End Sub

Dan dengan cara yang sama lakukan juga koding untuk Event-Event berikut :

Private Sub Form_Load()


MsgBox "Ini adalah Load Form2"
End Sub

Private Sub Form_Activate()


MsgBox "Ini adalah Activate Form2"
End Sub

Private Sub Form_Deactivate()


MsgBox "Ini adalah Deactivate Form2"
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)


MsgBox "Ini adalah QueryUnload Form2"
End Sub

Private Sub Form_Unload(Cancel As Integer)


MsgBox "Ini adalah Unload Form2"
End Sub

Private Sub Form_Terminate()


MsgBox "Ini adalah terminate form2"
End Sub

Dan akhirnya lakukan juga koding untuk Command1 pada Form2

Private Sub Command1_Click()


Unload Me
End Sub

42
Modul Visual Basic 6
[email protected]
3. Tampilkan kembali Form1. (caranya : Double Klik pada Form1 di jendela Project
Explorer), dan kemudian tanamkan Command1 s/d 4 diatasnya, dan lakukan koding
berikut :

Kemudian atur properti masing-masing menurut tabel berikut :

Kontrol Properti Value


Name cmdShow
Command1
Caption &Show
Name cmdHide
Command2
Caption &Hide
Name cmdLoad
Command3
Caption &Load
Name cmdUnLoad
Command4
Caption &UnLoad

Lakukan koding untuk masing-masing Command

Private Sub cmdShow_Click()


Form2.Show
End Sub

43
Modul Visual Basic 6
[email protected]
Private Sub Form_Resize()
MsgBox "Ini adalah Resize Form2"
End Sub

Private Sub cmdHide_Click()


Form2.Hide
End Sub

Private Sub cmdLoad_Click()


Load Form2
End Sub

Private Sub cmdUnload_Click()


Unload Form2
End Sub

4. Simpan Project anda FormEvent.vbp, Form1.frm, Form2.frm

5. Jalankan project anda

• Lakukan klik pada Show, dan perhatikan tulisan pada message box, yang
menunjukkan urutan Event pada Form2, klik Ok untuk menutup masing-masing
MsgBox.
• Alih keaktifan ke Form1 tanpa menutup Form2, perhatikan tulisan pada message
box, yang menunjukkan Event yang terjadi.
• Aktifkan kembali ke Form2 dengan klik pada Form2 (bukan klik pada Command1
di Form1), perhatikan Event yang terjadi.
• Tutup Form2, dengan klik pada Command1, dan perhatikan urutan Event yang
terjadi.
• Buka kembali Form2, dengan klik pada Command1 diatas Form1, dan
perhatikan urutan Event yang terjadi (apakah Event Initialize dijalankan ?)
• Tutup Form2
• Tutup Form1, dan perhatikan Event yang terjadi (mengapa Event Terminate
Form2 terjadi ?)

6. Jalankan project anda

• Lakukan klik pada Load, dan perhatikan tulisan pada message box, yang
menunjukkan urutan Event pada Form2, klik Ok untuk menutup masing-masing
MsgBox.
• Lakukan klik pada Show, dan perhatikan Event yang terjadi.

7. Lakukan percobaan sendiri untuk menambah pengertian anda.

Latihan 2
Judul : Pengaturan Form, Properti, dan Event yang diterapkan pada
pengolahan Random File

44
Modul Visual Basic 6
[email protected]
1. Buatlah suatu project baru, dan periksalah setting grid pada form anda, dengan
menu Tools, Option, General. Adapun hal yang perlu diperhatikan adalah keaktifan
Show Grid, dan Align Control to Grid

Kemudian tanamkan kontrol-kontrol berikut pada form1 sehingga membentuk tampilan


sebagai berikut, anda harus menanamkan kontrol Frame terlebih dahulu baru diikuti
dengan Option1 s/d 3 diatasnya, dalam hal ini Kontrol Frame1 bertindak sebagai
kontainer bagin Option1 s/d 3.

Pilihlah kontrol Label1, Label2, dan Label3 (caranya : klik pada Label1, kemudian tekan
tombol Ctrl dan jangan di lepas, klik pada Label2, dan klik pada Label3, akhirnya tombol
Ctrl di lepas), kemudian pada menu Format Pilih Align pilih Left.

45
Modul Visual Basic 6
[email protected]

Pilih Text1, Text2, dan Text3, dan, kemudian pada menu Format, pilih Make Same
Size, pilih Both, dan juga dibuat rata Kiri.

Lakukan juga proses diatas untuk Option1 s/d 3, Command1 s/d 7

2. Aturlah properti dari masing-masing kontrol sehingga menjadi sebagai berikut, dan
jangan lupa untuk mengatur tabindex dengan urutan txtCCode, txtNama,txtEkstension,
fraAkses, optLokal, optSLJJ, optSLI, baru kemudian urutan untuk commandbutton :

Kontrol Properti Nilai


Name
frmPemakai
Form1 Caption
Pemakaian Telepon
Icon
Label1 Caption CCode
Label2 Caption Nama
Label3 Caption Ekstension
Text txtCCode
Text1
Name txtCCode
Text txtNama
Text2
Name txtNama
Text txtEkstension
Text3
Name txtEkstension
Caption &Akses
Frame1
Name fraAkses
46
Modul Visual Basic 6
[email protected]
Caption &Lokal
Option1
Name cmdLokal
Caption &SLJJ
Option2
Name cmdSLJJ
Caption SL&I
Option3
Name cmdSLI
Caption &First
Command1
Name cmdFirst
Caption &Prev
Command2
Name cmdPrev
Caption &Next
Command3
Name cmdNext
Caption &Last
Command4
Name cmdLast
Caption &Add
Command5
Name cmdAdd
Caption &Edit
Command6
Name cmdEdit
Caption &Update
Command7
Name cmdUpdate

3. Aktifkan ke jendela Koding, dengan menekan tombol F7, atau pada jendela Project
Explorer, klik pada frmPemakai, dan klik pada icon View Code, dan pilih General,
Declaration

dan ketikkan kode berikut :

Option Explicit

'Deklarasi enumerated type


Private Enum Flag
flNone = 0
flAdd = 1 'Tambah data
flEdit = 2
'Perbaiki data
End Enum

'Struktur data untuk random file


Private Type Pemakai
CCode As String * 4 'Password PABX
Nama As String * 30 'Nama Pemakai

47
Modul Visual Basic 6
[email protected]
Ekstension As String * 3 'Ekstension
Local As Boolean 'Akses Lokal
SLJJ As Boolean 'Akses SLJJ
SLI As Boolean 'Akses SLI
End Type

'Deklarasi variabel Form Level


Dim DatPemakai As Pemakai 'Variabel untuk
menampung data Pemakai
Dim Posisi As Integer 'Untuk
mencatat nomor record yang sedang ditampilkan
Dim JlhRec As Integer 'Untuk mencatat jumlah
record dalam random file
Dim Aksi As Integer 'Untuk flag
Tambah Data, Perbaiki Data, atau None

Sub Kunci()
'Mengunci kontrol Text, dan OptionButton
txtCCode.Locked = True
txtNama.Locked = True
txtEkstension.Locked = True
FraAkses.Enabled = False 'Kalau framenya
disable, maka isinya tidak dapat diakses
End Sub

Sub Buka()
txtCCode.Locked = False
txtNama.Locked = False
txtEkstension.Locked = False
FraAkses.Enabled = True
End Sub

Sub Tampil()
'Sub rutin ini digunakan untuk menampilkan isi record ke
'Masing-masing kontrol yang bersesuaian
If Posisi > 0 Then 'Jika posisi
record lebih besar dari 0
Get #1, Posisi, DatPemakai 'Baca record
berdasarkan posisi
txtCCode.Text = DatPemakai.CCode
txtNama.Text = DatPemakai.Nama
txtEkstension.Text = DatPemakai.Ekstension
optLocal.Value = DatPemakai.Local
optSLJJ.Value = DatPemakai.SLJJ
optSLI.Value = DatPemakai.SLI
Else
Call Kosong
End If
Aksi = flNone 'Tandai Flag
Aksi adalah None
Call Kunci 'Buat semua
kontrol tidak dapat diperbaki
End Sub

48
Modul Visual Basic 6
[email protected]
Sub Kosong()
'Subrutin ini akan mengosongkan semua nilai pada masing-masing
kontrol
txtCCode.Text = ""
txtNama.Text = ""
txtEkstension.Text = ""
optLocal.Value = False
optSLJJ.Value = False
optSLI.Value = False
End Sub

4. Kembali ke tampilan Form1 (gunakan Shift-F7 atau icon view Object pada Project
Explorer), dan double klik pada frmPemakai, sehingga muncul Event Procedure
Form_Load, dan ketiklah kode berikut :

Private Sub Form_Load()


'Subrutin ini akan dijalankan ketika form di load
'ke memory
Open "C:\Pemakai.Dat" For Random As #1 Len=Len(DatPemakai)
'Membuka random file sebagai file nomor 1
JlhRec = LOF(1) / Len(DatPemakai) 'Menghitung jumlah record
If JlhRec > 0 Then 'Jika jumlah record > 0
Posisi = 1 'Posisi menunjuk ke record 1
Else
Posisi = 0
End If
Call Tampil
End Sub

Beralih ke Event Procedure Unload, perhatikan gambar berikut

dan ketiklah kode berikut :

Private Sub Form_Unload(Cancel As Integer)


Dim nPil As Integer
nPil = MsgBox("Apakah Anda Yakin", vbYesNo) 'Konfirmasi
penutupan
If nPil = vbYes Then 'Jika di jawab
Yes
Close #1 'Tutup
file 1

49
Modul Visual Basic 6
[email protected]
Cancel = 0 'Proses
tutup form dilakukan
Else
Cancel = 1 'Proses
tutup form dibatalkan
End If
End Sub

dan lakukan juga koding untuk kontrol masing-masing :

Private Sub cmdFirst_Click()


If JlhRec > 0 Then
Posisi = 1
Call Tampil
End If
End Sub

Private Sub cmdPrev_Click()


If Posisi > 1 Then
Posisi = Posisi - 1
Call Tampil
End If
End Sub

Private Sub cmdNext_Click()


If Posisi < JlhRec Then
Posisi = Posisi + 1
Call Tampil
End If
End Sub

Private Sub cmdLast_Click()


Posisi = JlhRec
Call Tampil
End Sub

Private Sub cmdAdd_Click()


Aksi = flAdd
Call Buka
Call Kosong
txtCCode.SetFocus
End Sub

Private Sub cmdEdit_Click()


Aksi = flEdit
Call Buka
txtCCode.SetFocus
End Sub

Private Sub cmdUpdate_Click()


If Aksi = flAdd Or Aksi = flEdit Then
If Aksi = flAdd Then
JlhRec = JlhRec + 1
50
Modul Visual Basic 6
[email protected]
Posisi = JlhRec
End If
DatPemakai.CCode = txtCCode.Text
DatPemakai.Nama = txtNama.Text
DatPemakai.Ekstension = txtEkstension.Text
DatPemakai.Local = optLocal.Value
DatPemakai.SLJJ = optSLJJ.Value
DatPemakai.SLI = optSLI.Value
Put #1, Posisi, DatPemakai
Call Kunci
End If
End Sub

5. Gunakan menu Format, Lock Controls, untuk mengunci semua kontrol yang berada
pada form agar ditidak dapat digeser dan diubah ukurannya, hal ini cocok dilakukan
pada form yang telah selesai.

6. Simpan project diatas sebagai Pemakai.vbp, dan Pemakai.frm

7. Aktifkan Objek browser, dan amati objek-objek yang ada pada Project1, dengan
menu View, Object Browser, kemudian pilih Project1.

Latihan 3
Judul : Tantangan pemrograman

Lengkapi program diatas dengan fasilitas Find, dimana jika tombol Find ditekan akan
muncul suatu InputBox yang menanyakan nama yang dicari, jika ketemu, akan
ditampilkan, dan jika tidak ketemu akan muncuk message box data tidak ada.

Private Sub cmdFind_Click()


Dim nama As String
nama = InputBox("Masukkan nama :", "Pencarian")
If nama <> "" Then
'lengkapi bagian ini

51
Modul Visual Basic 6
[email protected]

End If
End Sub

Kontrol Standard (bagian 1)


Kontrol standard terdapat pada semua versi Visual Basic, baik pada
Learning Edition, Profesional Edition, maupun Enterprised Edition.

Kontrol-kontrol standard ini akan sering anda gunakan untuk


pembentukkan user interface pada setiap project yang anda buat. Pada
bagian ini kita akan membahas beberapa kontrol standard beserta
properti-properti, event-event dan metoda-metoda yang bekerja pada
masing-masing kontrol. Dengan memahami properti, event dan metoda
akan sangat membantu anda dalam memanfaatkan kontrol-kontrol
tersebut secara efektif dan efisien.

Pada Modul ini kita akan membahas Label, Textbox, Option, Check,
Frame dan Command.

Label

Digunakan untuk menampilkan text tanpa bisa diubah oleh pemakai pada saat runtime.
Beberapa properti pada label :

Properti Fungsi
Digunakan untuk menentukan pemerataan tulisan pada kontrol label (0 - Left
Justify, 1 - Right Justify, 2 - Center)

Alignment

Digunakan untuk menentukan tampilan dari kontrol label di cat atau tidak (0 -
Appearance
Flat, 1 - 3D)
Digunakan untuk menentukan apakah ukuran kontrol otomatis disesuaikan
AutoSize
dengan ukuran tulisan (False, True)
Digunakan untuk menentukan warna latar belakang (properti ini saling berkaitan
BackColor
dengan properti Appearance)
BackStyle Digunakan untuk menentukan prilaku latar belakang kontrol label (0 -
Transparent, 1 - Opaque), kalau transparan, maka BackColor menjadi tidak
berarti, demikian juga Appearance.

52
Modul Visual Basic 6
[email protected]

Digunakan untuk menentukan bentuk border, apakah (0- None, 1 - Fixed Single)

BorderStyle

Digunakan untuk menentukan tulisan pada kontrol label, mungkin ini adalah
Caption
properti yang paling sering anda gunakan.
Digunakan untuk menentukan icon yang digunakan pada operasi drag-n-drop
DragIcon
pada kontrol label
DragMode Menentukan modus drag-n-drop (0 - manual, 1 - automatic)
Menentukan apakah kontrol label dapat menerima event yang dibuat oleh
Enabled
pemakai, misalnya event Click, MouseDown, MouseUp, dll.
Font Digunakan untuk menentukan jenis font, ukuran, style, dll
ForeColor Digunakan untuk menentukan warna tulisan
Height Digunakan untuk menentukan tinggi dari kontrol
Digunakan untuk menentukan nomor index, jika kontrol tersebut merupakan
Index
kontrol array.
Left Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse
MouseIcon berada diatas kontrol label tersebut, properti ini berarti bila properti MousePointer
diset menjadi (99 - Custom)
Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse
MousePointer
pointer berada diatas kontrol label tersebut.
Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang
Tag
berkaitan dengan kontrol label tersebut
Digunakan untuk menentukan tip tulisan ketika mouse pointer berada diatas
ToolTipText
kontrol
Top Digunakan untuk menentukan jarak atas kontrol dari kontainernya.
Digunakan untuk menentukan perlakuan terhadap tanda & ampersand sebagai
UseMnenomic
access key, atau sebagai simbol & (False, True)
Digunakan untuk menentukan apakah kontrol label tersebut Visible atau tidak
Visible
(False, True)
Width Digunakan untuk menentukan lebar kontrol label
Digunakan untuk menentukan apakah tulisan dalam kontrol label dapat dilipat
WordWrap
menjadi beberapa baris.

53
Modul Visual Basic 6
[email protected]

Gambar 3-1, Contoh properti pada kontrol Label

Adapun event-event yang efektif pada kontrol label adalah :

Event Keterangan
Change Event ini terjadi ketika nilai properti Caption dari kontrol
Event ini terjadi ketika pemakai melakukan klik pada kontrol, event ini terjadi
Click
dengan urutan (MouseDown, MouseUp, Click)
Event ini terjadi ketika pemakai melakukan double klik pada kontrol, event ini
DblClick terjadi dengan urutan (MouseDown, MouseUp, Click, MouseDown, DblClick,
MouseUp)
Event ini terjadi ketika pemakai melakukan penekanan tombol mouse pada
kontrol, parameter yang dapat digunakan adalah Button (1 - Tombol kiri, 2 -
MouseDown
Tombol kanan), Shift (1 - Shift, 2 - Ctrl, 3 - Alt), X (posisi kolom pointer), Y (posisi
baris pointer)
Event ini terjadi ketika pamakai mengerakan mouse pada kontrol, parameter
MouseMove yang dapat digunakan adalah Button (1 - Tombol kiri, 2 - Tombol kanan), Shift (1
- Shift, 2 - Ctrl, 3 - Alt), X (posisi kolom pointer), Y (posisi baris pointer)
Event ini terjadi ketika pemakai melepaskan penekanan tombol mouse pada
kontrol, parameter yang dapat digunakan adalah Button (1 - Tombol kiri, 2 -
MouseUp
Tombol kanan), Shift (1 - Shift, 2 - Ctrl, 3 - Alt), X (posisi kolom pointer), Y (posisi
baris pointer)

Adapun metoda yang efektif pada kontrol label adalah :

Metoda Keterangan
Metoda ini digunakan untuk memindahkan letak (koordinat Left, Top) dari kontrol
Move
label maupun ukurannya (ukuran Height, Width)
Refresh Metoda ini digunakan untuk mencetak ulang kontrol label.
Metoda ini digunakan untuk menentukan order kontrol, apakah diatas atau
ZOrder
dibawah kontrol lain.

Textbox

Digunakan untuk menampilkan text yang dapat diubah oleh pemakai pada saat runtime
54
Modul Visual Basic 6
[email protected]
Properti Fungsi
Alignment sda
Appearance sda
BackColor sda
BorderStyle sda
Digunakan untuk menentukan apakan event Validate di aktifkan ketika kontrol
CauseValidation
akan kehilangan fokus (False, True)
DragIcon sda
DragMode sda
Enabled sda
Font sda
ForeColor sda
Height sda
Digunakan untuk menentukan apakah selection disembunyikan ketika kontrol
HideSelection
kehilangan fokus
Index sda
Left Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
Digunakan untuk menentukan apakah text dalam kontrol textbox dapat di
Locked
perbaharui oleh pemakai atau tidak (False, True)
Digunakan untuk menentukan jumlah huruf maksimal yang dapat diketikkan
MaxLength
dalam textbox (0 s/d 65535), 0 tidak dibatasi.
Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse
MouseIcon berada diatas kontrol label tersebut, properti ini berarti bila properti MousePointer
diset menjadi (99 - Custom)
Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse
MousePointer
pointer berada diatas kontrol label tersebut.
Digunakan untuk menentukan apakah tulisan dalam textbox dapat ditampilkan
dalam bentuk beberapa baris, dan mengenali Enter untuk memasuki baris baru.
(False, True)

MultiLine

Digunakan untuk menentukan karakter yang digunakan untuk menyandikan


tampilan huruf yang diketik oleh pemakai. Biasanya digunakan untuk pengisian
password, dimana huruf yang ditekan ditampilkan dalam bentuk *

PasswordChar

ScrollBars Digunakan untuk menentukan penampilan ScrollBar pada textbox, properti ini
efektif jika setting properti MultiLine adalah True (0 - None, 1 - Horizontal, 2 -
Vertical, 3 - Both)

55
Modul Visual Basic 6
[email protected]

Digunakan untuk menentukan urutan tabindex, 0 adalah kontrol yang pertama


TabIndex mendapat fokus jika form dijalankan. Properti ini efektif jika setting properti
TabStop adalah True
Digunakan untuk menentukan apakah textbox dapat menerima fokus karena
TabStop
penekanan tombol TAB oleh pemakai (False, True)
Tag sda
Text Properti ini berisi tulisan yang berada dalam textbox
ToolTipText sda
Top sda
Width sda

Gambar 3-2, Contoh properti pada kontrol Text

Adapun event-event yang efektif pada kontrol Textbox adalah :

Event Keterangan
Change Event ini terjadi ketika nilai properti Text dari kontrol mengalami perubahan
Click sda
DblClick sda
GotFocus Event ini terjadi ketika kontrol mendapatkan fokus
KeyDown Event ini terjadi ketika pemakai mengetik karakter pada kontrol
KeyPress Event ini terjadi setelah event KeyDown ketika pemakai mengetik karakter pada
kontrol, parameter yang dapat digunakan adalah KeyAscii. Anda dapat
memanipulasi tombol yang diketik dengan melakukan perubahan pada nilai
KeyAscii.

Contoh :

Private Sub txtNama_KeyPress(KeyAscii As Integer)


If KeyAscii = 13 Then
SendKeys "{Tab}"

56
Modul Visual Basic 6
[email protected]

End If
End Sub
Event ini terjadi setelah event KeyPress ketika pemakai mengetik karakter pada
KeyUp
kontrol dengan urutan (KeyDown, KeyPress, KeyUp, Change)
LostFocus Event ini terjadi ketika kontrol kehilangan fokus
MouseDown sda
MouseMove sda
MouseUp sda
Validate Event ini terjadi ketika kontrol akan kehilangan fokus.

Adapun metoda yang efektif pada kontrol Textbox adalah :

Metoda Keterangan
Move sda
Refresh sda
Setfocus Metoda ini digunakan untuk menimdahkan fokus ke kontrol yang bersangkutan
ZOrder sda

Option

Digunakan untuk menampilkan beberapa pilihan yang hanya dapat dipilih salah satu
dalam suatu form, untuk

Properti Fungsi
Alignment sda
Appearance sda
BackColor sda
Caption sda
CauseValidation sda
Digunakan untuk menentukan gambar yang ditampilkan ketika kontrol Option
DisablePicture disable (properti Enabled = False), properti ini efektif jika setting properti Style
adalah (1- Graphical)
Digunakan untuk menentukan gambar yang ditampilkan ketika kontrol Option dipilih
DownPicture (properti Value = True), properti ini efektif jika setting properti Style adalah (1-
Graphical)
DragIcon sda
DragMode sda
Enabled sda
Font sda
ForeColor sda
Height sda
Index sda
Left Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
MaskColor Digunakan untuk warna pada bitmap yang akan dijadikan transparan, properti ini

57
Modul Visual Basic 6
[email protected]
efektif jika picture yang masukkan adalah (*.bmp), dan setting properti
UseMaskColor adalah True
MouseIcon sda
MousePointer sda
Digunakan untuk menentukan gambar yang digunakan, properti ini efektif jika
Picture
setting properti Style adalah (1 - Graphical)
Digunakan untuk menentukan jenis style pada kontrol option (0 - Standard, 1 -
Style
Graphical)
TabIndex sda
TabStop sda
Tag sda
ToolTipText sda
Top sda
Digunakan akan warna yang ditentukan pada MaskColor efektif atau tidak (False,
UseMaskColor
True)
Value Adalah nilai kontrol option button (True - terpilih, False - tidak terpilih)
Visible Digunakan untuk menentukan apakah kontrol Visibel atau tidak.
Width sda

Gambar 3-3, Contoh properti pada kontrol Option

Adapun event-event yang efektif pada kontrol option adalah :

Event Keterangan
sda, pada option event ini juga dibangkitkan ketika kontrol menerima fokus,
Click
maupun ketika pemakai menekan space pada kontrol bersangkutan.
DblClick sda
GotFocus sda
KeyDown sda
KeyPress sda
KeyUp sda
LostFocus sda
MouseDown sda
MouseMove sda
MouseUp sda
Validate sda

Adapun metoda yang efektif pada kontrol Option adalah :


58
Modul Visual Basic 6
[email protected]
Metoda Keterangan
Move sda
Refresh sda
Setfocus sda, pada kontrol option, metoda ini akan membangkitkan event Click.
ZOrder sda

Check

Digunakan untuk menampilkan beberapa pilihan yang dapat dipilih lebih dari satu

Gambar 3-4, Contoh properti pada kontrol Check

Properti kontrol Check, maupun event dapat dilihat pada properti Option

Frame

Digunakan untuk mengelompokan sekelompok kontrol. Pemakaian kontrol frame yang


paling nyata adalah untuk mengelompokan sejumlah option, sebagaimana kita ketahui,
pada suatu form, hanya 1 option yang dapat dipilih setiap saat, hal ini dapat diatasi
dengan pemakaian frame, sehingga option dapat dipilih sesuai dengan konteks yang
diwakili.

Properti Fungsi
Appearance sda
BackColor sda
BorderStyle sda
Caption sda

59
Modul Visual Basic 6
[email protected]
CauseValidation sda
DragIcon sda
DragMode sda
Enabled sda
Font sda
ForeColor sda
Height sda
Index sda
Left Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
MouseIcon sda
MousePointer sda
TabIndex sda
Tag sda
ToolTipText sda
Top sda
Digunakan untuk menentukan apakah kontrol Visibel atau tidak, jika Visible false,
Visible
maka semua kontrol yang berada diatasnya menjadi tidak kelihatan.
Width sda

Gambar 3-5, Contoh properti pada kontrol Frame

Adapun event-event yang efektif pada kontrol frame adalah :

Event Keterangan
Click sda
DblClick sda
MouseDown sda
MouseMove sda
MouseUp sda

Adapun metoda yang efektif pada kontrol Frame adalah :

Metoda Keterangan
Move sda
Refresh sda
ZOrder sda
60
Modul Visual Basic 6
[email protected]
CommandButton

Digunakan untuk mendapatkan konfirmasi pemakai untuk pelaksanaan fungsi tertentu.

Properti Fungsi
Alignment sda
Appearance sda
BackColor sda
Digunakan untuk menentukan apakah command button merupakan perintah
Cancel Cancel untuk form tersebut , jika properti ini True, maka ketika pemakai menekan
ESC, akan membangkitkan event Click untuk kontrol tersebut.
Caption sda
CauseValidation sda
Digunakan untuk menentukan apakan command button merupakan Default
Default command untuk form tersebut, jika properti ini True, maka ketika pemakai
menekan Enter, akan membangkitkan event Click untuk kontrol tersebut.
DragIcon sda
DragMode sda
Enabled sda
Font sda
ForeColor sda
Height sda
Index sda
Left Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
Digunakan untuk warna pada bitmap yang akan dijadikan transparan, properti ini
MaskColor efektif jika picture yang masukkan adalah (*.bmp), dan setting properti
UseMaskColor adalah True
MouseIcon sda
MousePointer sda
Picture sda
Style sda
TabIndex sda
TabStop sda
Tag sda
ToolTipText sda
Top sda
UseMaskColor sda
Visible Digunakan untuk menentukan apakah kontrol Visibel atau tidak.
Width sda

61
Modul Visual Basic 6
[email protected]

Gambar 3-6, Contoh properti pada kontrol Command

Adapun event-event yang efektif pada kontrol commandbutton adalah :

Event Keterangan
sda, pada commandbutton, event ini juga dibangkitkan ketika pemakai menekan
Click
space pada kontrol tersebut.
GotFocus sda
KeyDown sda
KeyPress sda
KeyUp sda
LostFocus sda
MouseDown sda
MouseMove sda
MouseUp sda

Adapun metoda yang efektif pada kontrol CommandButton adalah :

Metoda Keterangan
Move sda
Refresh sda
Setfocus sda
ZOrder sda

Visual Basic Application


Deklarasi Konstanta
Anda sering menjumpai suatu code yang mengandung nilai yang berulang-ulang
dimunculkan, atau anda menemukan bahwa angka tersebut susah diingat. Dalam hal
ini anda dapat membuat code anda menjadi lebih mudah dibaca-lebih mudah ditangani-
dengan menggunakan suatu konstanta. Suatu konstanta adalah nama yang
menyimpan dari suatu nilai yang tidak dapat berubah. Ada dua sumber dari suatu
konstanta :

62
Modul Visual Basic 6
[email protected]
• Intrinsic atau System-defined konstanta yang disediakan oleh suatu aplikasi atau
control. Konstanta Visual Basic terdaftar pada Visual Basic (VB), Visual Basic for
Application (VBA), dan Data Access (DAO).
• Symbolic atau User-defined konstanta adalah dideklarasikan dengan
menggunakan statement Const.

Membuat Konstanta Anda Sendiri

Syntax untuk deklarasi konstanta adalah :

[Public|Private] Const constantname [As type] = expression

Contoh :

Const Pi = 3.12159265358979
Public Const Planet As Integer= 9
Const ReleaseDate = #7/1/95#

Scope dari suatu user-defined konstanta

• Membuat suatu konstanta yang mana hanya ada dalam suatu procedure,
deklarasikan dia dalam procedure tersebut
• Membuat suatu konstanta berlaku pada semua procedure dalam suatu module,
deklarasikan dia pada bagian deklarasi di module tersebut
• Membuat suatu konstanta berlaku pada semua aplikasi, deklarasikan dia dengan
keyword Public sebelum kata Const.

Struktur Perulangan
Struktur loop memperbolehkan anda untuk melaksanakan sekelompok baris lebih dari
satu kali :

Do...Loop

Gunakan Do loop untuk mengeksekusi suatu blok statement dengan jumlah perulangan
yang tak terhingga, ada beberapa Do...Loop statement, tetapi masing-masing
mengevaluasi suatu kondisi untuk menentukan apakah melanjutkan eksekusi

Berikut ini adalah statement Do…Loop, yang dijalankan selama kondisi benar :

Do While condition
statements
Loop

Ketika Visual menjalankan Do loop ini, pertama kali akan di coba kondisinya, jika
kondisi False (zero), akan diloncati semua statements yang mengikuti kondisi tersebut.
Visual Basic akan menjalankan statements jika kondisi benar dan kembali ke Do…Loop
berikutnya.

Function Faktorial (x)


Dim Hasil As Double
Dim Count As Long
Hasil = 1
count = 2
63
Modul Visual Basic 6
[email protected]
Do While Count <= x
Hasil = Hasil * count
count = count + 1
Loop
Faktorial = count
End Function

Variasi lain dari statement Do…Loop, yang menjamin minimal satu kali statement
dijalankan :

Do
statements
Loop While condition

Dua variasi yang analog dengan dua contoh sebelumnya adalah perulangan minimal
satu kali. Dan berikut ini adalah berulang atau tidak sama sekali :

Do Until condition
statements
Loop
Do
statements
Loop Until condition

For...Next

Do loops bekerja dengan baik, ketika anda tidak tahu berapa bayak kali untuk butuhkan
untuk menjalankan statement. Ketika anda mengetahui harus menjalankan statement
sejumlah kali, bagaimanapun For…Next adalah pilihan yang lebih baik. Tidak seperti
Do Loop, For…loop menggunakan suatu variabel yang disebut counter yang mana
akan bertambah atau berkurang pada setiap perulangan. Syntaxnya adalah :

For counter = start To end [Step increment]


statements
Next [counter]

Argumen counter, start, end, dan increment semuanya adalah numerik

1. Dalam melakukan For loop, Visual Basic :


2. Menset nilai counter sama dengan start
3. Mencoba apakah counter lebih besar dari end. Jika ya, Visual Basic
meninggalkan looping tersebut.
4. Menjalankan statements tersebut.
5. Menaikkan counter dengan 1 atau dengan nilai step yang ditentukan
6. Mengulangi langkah 2 sampai 4

Code berikut akan mencetak semua item yang terdapat pada suatu daftar list.

Private Sub Form_Click ()


Dim I As Integer
For i = 0 To List1.ListCount-1
Print List1.List(I)
Next
End Sub

Struktur Kendali Nested


64
Modul Visual Basic 6
[email protected]
Anda dapat meletakkan suatu struktur kendali didalam struktur kendali lainnya, yang
dikenal dengan istilah nested. Struktur kendali pada Visual Basic dapat nested
sebanyak level yang anda inginkan.

Meninggalkan suatu Struktur Kendali

Statement Exit memperbolehkan anda untuk keluar langsung dari suatu For loop, Do
Loop, syntax untuk statement Exit adalah sederhana : Exit For dapat muncul sebanyak
mungkin dalam suatu For. Loop, demikian juga Exit Do untuk Do loop.

For counter = start To end [Step increment]


[statementblock]
[Exit For]
[statementblock]
Next [counter[, counter] [,...]]
Do [{While | Until} condition]
[statementblock]
[Exit Do]
[statementblock]
Loop

Statement Exit Do bekerja pada semua versi syntax Do loop.


Exit For dan Exit Do adalah kadang-kadang perlu untuk keluar dari suatu loop dengan
segera, tanpa melakukan iterasi yang berikutnya.

Latihan 1
Judul : Mengenal Properti Label, Text, Option, Check, Frame dan Command

1. Buatlah project baru yang berisi form, form berikut :

Form 1

Form 2

65
Modul Visual Basic 6
[email protected]

Form 3

Form 4

Form 5

Form 6
66
Modul Visual Basic 6
[email protected]

Form 7 (diset sebagai startup object)

Dengan fungsi masing-masing tombol untuk mengaktifkan masing-masing form yang


bersesuaian.

Latihan 2

Judul : Memahami beberapa event yang umum pada kontrol.

1. Buatlah project baru, dengan Form1

67
Modul Visual Basic 6
[email protected]
Kontrol Properti Value
Name txtUmur
Text1
CauseValidation True
Text2 Name txtCoba1
Text3 Name txtCoba2
Name cmdDefault
Command1 Caption &Default True
Default True
Name cmdCancel
Command2 Caption &Cancel True
Cancel True

2. Lakukan Koding berikut :

Private Sub cmdCancel_Click()


MsgBox "cmdCancel Event Click"
End Sub

Private Sub cmdDefault_Click()


MsgBox "cmdDefault Event Enter"
End Sub

Private Sub txtCoba2_KeyDown(KeyCode As Integer, Shift As Integer)


Debug.Print "txtCoba2 Event Keydown dengan KeyCode :" & KeyCode & " Shift : " & Shift
End Sub

Private Sub txtCoba2_KeyPress(KeyAscii As Integer)


Debug.Print "txtCoba2 Event KeyPressed dengan KeyAscii : " & KeyAscii
End Sub

Private Sub txtCoba2_KeyUp(KeyCode As Integer, Shift As Integer)


Debug.Print "txtCoba2 Event Keyup dengan KeyCode : " & KeyCode & " Shift : " & Shift
End Sub

Private Sub txtCoba3_Click()


Debug.Print "txtCoba3 Event Click"
End Sub

Private Sub txtCoba3_DblClick()


Debug.Print "txtCoba3 Event DblClick"
End Sub

Private Sub txtCoba3_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)


Debug.Print "txtCoba3 Event MouseDown dengan Button : " & Button & " Shift : " & Shift & " X : " & X & "
Y:"&Y
End Sub

Private Sub txtCoba3_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)


Debug.Print "txtCoba3 Event MouseMove dengan Button : " & Button & " Shift : " & Shift & " X : " & X & "
Y:"&Y
End Sub

Private Sub txtCoba3_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)


Debug.Print "txtCoba3 Event MouseUp dengan Button : " & Button & " Shift : " & Shift & " X : " & X & " Y :
"&Y
End Sub

Private Sub txtCoba1_GotFocus()

68
Modul Visual Basic 6
[email protected]
MsgBox "txtCoba1 menerima fokus"
End Sub

Private Sub txtCoba1_LostFocus()


MsgBox "txtCoba1 kehilangan fokus"
End Sub

Private Sub txtCoba2_Change()


Debug.Print "txtCoba2 Change"
End Sub

Private Sub txtUmur_Validate(Cancel As Boolean)


If (Val(txtUmur) < 5) Or (Val(txtUmur) > 125) Then
MsgBox "Masukkan umur 5 s/d 125" & vbCrLf & _
"Event Validate"
Cancel = True
End If
End Sub

Latihan 3
Judul : Tantangan melengkapi program data pemakai
Telepon Latihan Bab2
1. Aktifkan program Latihan 2-2, modul sebelumnya.

Lengkapi program tersebut dengan beberapa hal sebagai berikut :

1. txtCCode, maksimal pengetikkan 4 huruf, dan tidak boleh kurang dari 4 huruf, dan
yang dapat diketik hanya digit (0 s/d 9)

2. txtNama, maksimal pengetikkan 30 huruf, dan huruf pertama setiap suku kata
otomatis besar, misalnya Hendra Wijaya, Susan Dewichan

3. txtEkstension, maksimal pengetikkan 3 huruf, dan yang dapat diketik hanya digit (0 s/
d 9), dan nomor ekstension terkecil 100, terbesar 600.

69
Modul Visual Basic 6
[email protected]
4. Penekanan Enter dapat digunakan untuk berpindah antar textbox

5. Option SLI, hanya bisa dipilih untuk ekstension 100 s/d 199, SLJJ, hanya dipilih
untuk ekstension 200 s/d 299

6. txtCCode, txtNama, txtEkstension, dan Akses tidak boleh kosong.

Kontrol Standard (bagian 2)


ListBox
Digunakan untuk menampilkan daftar pilihan yang dapat bergeser. Suatu listbox
digunakan jika jumlah pilihan cukup banyak, sehingga menjadi tidak efektif kalau
menggunakan Option maupun Check.

Properti Fungsi
Appearance Digunakan untuk menentukan tampilan dari kontrol (0 - Flat, 1 - 3D)
BackColor Digunakan untuk menentukan warna latar belakang.
Digunakan untuk menentukan apakan event Validate di aktifkan ketika kontrol
CauseValidation
akan kehilangan fokus (False, True)
Digunakan untuk menentukan apakah daftar pilihan dalam listbox ditampilkan 1
kolom vertikal kebawah (0), atau kebawah dan menyamping sesuai dengan
jumlah kolom yang ditentukan jika daftar pilihan cukup panjang.

Column

Digunakan untuk menentukan icon yang digunakan pada operasi drag-n-drop


DragIcon
pada kontrol label
DragMode Menentukan modus drag-n-drop (0 - manual, 1 - automatic)
Menentukan apakah kontrol label dapat menerima event yang dibuat oleh
Enabled
pemakai, misalnya event Click, MouseDown, MouseUp, dll.
Font Digunakan untuk menentukan jenis font, ukuran, style, dll
ForeColor Digunakan untuk menentukan warna tulisan
Height Digunakan untuk menentukan tinggi dari kontrol
Digunakan untuk menentukan nomor index, jika kontrol tersebut merupakan
Index
kontrol array.
IntegralHeight Digunakan untuk menentukan tinggi dari kontrol (Height) sedemikian rupa
sehingga tidak ada item yang ditampilkan sebagian ( False, True)

70
Modul Visual Basic 6
[email protected]

Adalah daftar yang dapat digunakan untuk menyimpan nilai numerik yang
ItemData berkaitan dengan item-item yang terdapat dalam listbox. Berkoresponden satu-
satu.
Left Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
Merupakan properti yang berisi pilihan dalam Listbox, untuk mengetik itemnya
List
anda harus menggunakan Ctrl-Enter untuk memasukki item yang berikutnya.
Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse
MouseIcon berada diatas kontrol label tersebut, properti ini berarti bila properti MousePointer
diset menjadi (99 - Custom)
Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse
MousePointer
pointer berada diatas kontrol label tersebut.
Digunakan untuk menentukan apakah item dalam listbox dapat dipilih lebih dari
satu atau tidak (0 - None, 1 - Simple, 2 - Extended) Perbedaan antara 1 - Simple
dengan 2 - Extended, adalah pada Simple pemilihan beberapa item sekaligus
tidak dapat menggunakan bantuan Shift.

MultiSelect

Digunakan untuk menentukan apakah item dalam listbox otomatis diurut


Sorted
berdasarkan aphabetik atau tidak (False, True)
Digunakan untuk menentukan bentuk tampilan item yang digunakan (0 -
Standard, 1 - Checkbox)

Style

Digunakan untuk menentukan urutan tabindex, 0 adalah kontrol yang pertama


TabIndex mendapat fokus jika form dijalankan. Properti ini efektif jika setting properti
TabStop adalah True
Digunakan untuk menentukan apakah textbox dapat menerima fokus karena
TabStop
penekanan tombol TAB oleh pemakai (False, True)
Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang
Tag
berkaitan dengan kontrol label tersebut
Digunakan untuk menentukan tip tulisan ketika mouse pointer berada diatas
ToolTipText
kontrol
Top Digunakan untuk menentukan jarak atas kontrol dari kontainernya.
Digunakan untuk menentukan apakah kontrol label tersebut Visible atau tidak
Visible
(False, True)

71
Modul Visual Basic 6
[email protected]
Width Digunakan untuk menentukan lebar kontrol label

Menentukan isi ListBox

Untuk menentukan isi listbox anda dapat mengetikkannya pada waktu design dengan
mengisinya di properti List. Misalnya daftar pilihan yang diinginkan adalah Satu, Dua,
Tiga ..., Lima, maka :

• klik pada properti List,


• ketikkan Satu, tekan Ctrl-Enter
• ketikkan Dua, tekan Ctrl-Enter
• dst

Cara lain adalah dengan menggunakan metoda AddItem(string, index) pada Event
Load pada Form, dimana string adalah item yang ingin ditambahkan ke ListBox,
sedangkan index adalah posisi dimana item akan disisip, defaultnya adalah posisi
terakhir. Contoh :

Private Sub Form_Load()


LstAngka.AddItem("Satu")
LstAngka.AddItem("Dua")
LstAngka.AddItem("Tiga")
LstAngka.AddItem("Empat")
LstAngka.AddItem("Lima")
End Sub

Mendapatkan jumlah item dalam Listbox

Untuk mendapatkan jumlah item dalam Listbox anda dapat menggunakan properti
ListCount.

Menggambil item yang dipilih oleh pemakai

Pada Listbox jenis Multiselect = False, maka item yang dapat dipilih oleh pemakai
hanya satu, sehingga hal tersebut efektif diambil dengan menggunakan properti Text
dari Listbox. Contoh berikut akan menampilkan item yang diklik oleh pemakai.

Private Sub LstAngka_Click()


MsgBox LstAngka.Text
End Sub

Jika pada Listbox dengan Multiselect = True, maka pekerjaan menjadi sedikit lebih
rumit, dimana kita perlu memeriksa item pada listbox satu persatu untuk memeriksa
apakah item tersebut dalam keadaan terpilih (diperiksa dengan properti selected(index)
atau tidak. Contoh berikut akan menampilkan kotak pesan yang berisi item-item yang
terpilih.

Private Sub cmdPeriksa_Click()


For i = 0 To LstAngka.ListCount - 1
If LstAngka.Selected(i) Then 'Jika True artinya terpilih
MsgBox LstAngka.List(i) 'Tampilkan item tersebut dari List
End If
Next i
End Sub

72
Modul Visual Basic 6
[email protected]
Sesuatu hal yang perlu diingat bahwa nomor index item pada Listbox dimulai dari 0 s/d
ListCount - 1

Mendapatkan nomor posisi item yang sedang difokus

Untuk mendapatkan posisi item yang sedang difokus pada Listbox dapat digunakan
properti ListIndex

Menghapus Item pada Listbox

Untuk menghapus item pada Listbox, anda dapat menggunakan metoda


RemoveItem(index), dimana index adalah nomor index yang akan dihapus.

Contoh : Untuk memindahkan item yang terpilih pada ListBox kiri ke listbox kanan,
dimana setting properti pada Listbox kiri Multiselect = False.

Gambar 4-1, Contoh program yang menggunakan ListIndex dan RemoveItem

Private Sub cmdPindah_Click()


If LstAngka.ListIndex > -1 Then
LstPindah.AddItem (LstAngka.List(LstAngka.ListIndex))
LstAngka.RemoveItem (LstAngka.ListIndex)
End If
End Sub

Pada Listbox yang MultiSelect = False, properti ListIndex menunjukkan nomor index
(mulai dari 0) item yang sedang terpilih, dan jika tidak ada yang terpilih nilainya -1.

Mengosongkan isi seluruh Listbox

Untuk mengosongkan isi seluruh Listbox, anda dapat menggunakan Metoda Clear.

Adapun event-event yang efektif pada Listbox adalah sebagai berikut :

Event Keterangan
Event ini terjadi ketika pemakai melakukan klik pada kontrol, event ini terjadi
Click
dengan urutan (MouseDown, MouseUp, Click)
Event ini terjadi ketika pemakai melakukan double klik pada kontrol, event ini
DblClick terjadi dengan urutan (MouseDown, MouseUp, Click, MouseDown, DblClick,
MouseUp)
GotFocus Event ini terjadi ketika kontrol mendapatkan fokus

73
Modul Visual Basic 6
[email protected]
Event ini terjadi ketika pemakai melakukan klik untuk menandai checkbox pada
ItemCheck
item Listbox, Event ini efektif pada ListBox yang Style = Checkbox
KeyDown Event ini terjadi ketika pemakai mengetik karakter pada kontrol
Event ini terjadi setelah event KeyDown ketika pemakai mengetik karakter pada
kontrol, parameter yang dapat digunakan adalah KeyAscii. Anda dapat
KeyPress
memanipulasi tombol yang diketik dengan melakukan perubahan pada nilai
KeyAscii.
Event ini terjadi setelah event KeyPress ketika pemakai mengetik karakter pada
KeyUp
kontrol dengan urutan (KeyDown, KeyPress, KeyUp, Change)
LostFocus Event ini terjadi ketika kontrol kehilangan fokus
Event ini terjadi ketika pemakai melakukan penekanan tombol mouse pada
kontrol, parameter yang dapat digunakan adalah Button (1 - Tombol kiri, 2 -
MouseDown
Tombol kanan), Shift (1 - Shift, 2 - Ctrl, 3 - Alt), X (posisi kolom pointer), Y (posisi
baris pointer)
Event ini terjadi ketika pamakai mengerakan mouse pada kontrol, parameter
MouseMove yang dapat digunakan adalah Button (1 - Tombol kiri, 2 - Tombol kanan), Shift (1
- Shift, 2 - Ctrl, 3 - Alt), X (posisi kolom pointer), Y (posisi baris pointer)
Event ini terjadi ketika pemakai melepaskan penekanan tombol mouse pada
kontrol, parameter yang dapat digunakan adalah Button (1 - Tombol kiri, 2 -
MouseUp
Tombol kanan), Shift (1 - Shift, 2 - Ctrl, 3 - Alt), X (posisi kolom pointer), Y (posisi
baris pointer)
Scroll Event ini terjadi ketika Listbox mengalami scroll.
Validate Event ini terjadi ketika kontrol akan kehilangan fokus.

Combo Box
Jika dibandingkan dengan Listbox, maka ComboBox lebih menghemat pemakaian
tempat pada form, dimana hasil pilihan pemakai ditempilkan dalam suatu textbox,
dimana pilihan-pilihan dapat di drop-down dalam bentuk listbox. Pada Combobox
pemakai juga dapat mengetik langsung pilihannya, tetapi hal ini sangat bergantung
pada Style yang digunakan. Jika pada Listbox dimungkinkan pemakai melakukan
MultiSelect, tetapi pada Combobox hal tersebut tidak dapat dilakukan.

Properti Fungsi
BackColor sda
CauseValidation sda
DragIcon sda
DragMode sda
Enabled sda
Font sda
ForeColor sda
Height sda
Index sda
IntegralHeight sda
ItemData sda
Left sda
Locked sda
MouseIcon sda
MousePointer sda
Sorted sda

74
Modul Visual Basic 6
[email protected]
Digunakan untuk menentukan bentuk tampilan combo yang digunakan (0 -
Dropdown Combo, 1 - Simple Combo, 2 - Dropdown List), pada Dropdown
Combo, pemakai diperbolehkan mengetik tulisan yang tidak ada di list, pada
Simple Combo, pemakai boleh mengetik atau memilih dengan tombol keatas
atau kebawah dan daftar tidak bisa terbuka, pada Dropdown List, tulisan hanya
dapat dipilih dari daftar.

Style

TabIndex sda
TabStop sda
Tag sda
Text sda
ToolTipText sda
Top sda
Visible sda
Width sda

Untuk pengolahan ComboBox tidak jauh berbeda dengan Listbox, untuk itu perhatikan
kembali contoh-contoh pengolahan Listbox diatas dengan sedikit perbedaan
karakteristik antara Listbox dan ComboBox.

Adapun event-event yang efektif pada ComboBox adalah sebagai berikut

Event Keterangan
Click sda
DblClick sda
GotFocus sda
KeyDown sda
KeyPress sda
KeyUp sda
LostFocus sda
MouseDown sda
MouseMove sda
MouseUp sda
Validate sda

Mengenal Procedure
Procedure digunakan untuk memadatkan tugas-tugas berulang ataupun proses yang
digunakan bersama, seperti perhitungan yang sering dilakukan, text dan manipulasi
kontrol, serta operasi database.
75
Modul Visual Basic 6
[email protected]
Secara umum ada dua keuntungan dengan pemakaian procedure dalam program :

• Procedure memungkinkan anda untuk memecahkan program anda pada unit


logika yang lebih kecil, sehingga anda dapat dengan mudah melakukan proses
debug dari pada jika keseluruhan program tanpa menggunakan procedure.
• Procedure yang digunakan dalam suatu program dapat bertindak sebagai suatu
blok yang dibangun untuk program lain dengan sedikit perubahan atau tanpa
perubahan sama sekali.

Ada beberapa jenis procedure yang digunakan dalam Visual Basic

• Sub procedure yang tidak menggembalikan nilai


• Function procedure yang mengembalikan nilai
• Property procedure yang dapat mengembalikan nilai dan diisi nilai yang
mengacu pada suatu objek.

Sub Procedure

Syntax penulisan Sub procedure:

[Private|Public][Static]Sub namaprosedur (argumen-argumen)

pernyataan-pernyataan

End Sub

Setiap kali procedure dipanggil, maka pernyataan-pernyataan yang berada di antara


Sub dan End Sub akan dijalankan.

Argumen pada procedure adalah nilai yang akan dilewatkan saat pemanggilan
procedure.

Di Visual Basic Sub Procedure dapat dibagi atas dua yaitu :

• General Procedure, procedure yang diaktifkan oleh aplikasi


• Event Procedure, Procedure yang diaktifkan oleh system sebagai respon
terhadap event.

Contoh, sub Tengah yang dapat digunakan untuk menampilkan form ketengah Layar,
dimana x adalah parameter yang merupakan form yang akan dibuat ketengah layar.

Sub Tengah(x As Form)


x.Top = (Screen.Height - x.Height) \ 2
x.Left = (Screen.Width - x.Width) \ 2
End Sub
Private Sub Form_Load()
Call Tengah(Me)
End Sub

Function Procedure

Pada Visual Basic telah tersedia berbagai fungsi bawaan seperti Sqr, Cos, dan Chr,
tetapi fungsi-fungsi yang tersedia tersebut bersifat umum dan kandang-kadang tidak

76
Modul Visual Basic 6
[email protected]
memenuhi kebutuhan programer, untuk keperluan tersebut anda dapat menciptakan
fungsi-fungsi sendiri yang dikenal dengan Function procedure.

Adapun syntax penulisan function procedure :

[Private|Public][Static]Function namaprocedure (argumen-argumen) [As type]

statements

End Function

Ada tiga perbedaan antara function dan procedure :

• Umumnya anda dapat memanggil suatu function dengan mengikutkan nama


function sisi kanan dari statement atau ekspresi. (returnvalue = function()).
• Function memiliki type data seperti suatu variabel. Ini menentukan type yang dari
nilai yang dikembalikan.
• Nilai kembali dimasukkan ke namafunction itu sendirinya, dan suatu function
dapat menjadi bagian dari suatu ekspresi yang panjang.

Contoh Fungsi ciptaan untuk mengembalikan nama bulan dari suatu tanggal dalam
bahasa Indonesia.

Function Bulan(x As Date)


Dim sRet As String

Select Case Month(x)


Case 1: sRet = "Januari"
Case 2: sRet = "Februari"
Case 3: sRet = "Maret"
Case 4: sRet = "April"
Case 5: sRet = "Mei"
Case 6: sRet = "Juni"
Case 7: sRet = "Juli"
Case 8: sRet = "Agustus"
Case 9: sRet = "September"
Case 10: sRet = "Oktober"
Case 11: sRet = "Nopember"
Case 12: sRet = "Desember"
Case Else
sRet = "tidak sah"
End Select

Bulan = sRet

End Function

Latihan 1

Judul : Memahami kontrol Listbox yang diaplikasikan untuk


pengolahan nama negara dan propinsi

1. Buatlah program yang menyimpan nama-nama negara didalam sebuah text file
Negara.txt, dimana setiap kali form diaktifkan, maka isi file Negara.txt akan dibaca dan
77
Modul Visual Basic 6
[email protected]
ditampilkan dalam suatu listbox, kemudian pemakai dapat melakukan tambah, perbaiki
maupun hapus item dalam listbox, dan isi daftar akan disimpan kembali ke file
Negara.txt setiap pemakai melakukan klik pada Simpan ke file.

Kontrol Properti Nilai


Name lstNegara
Listbox1 MultiSelect 0 - None
Sorted True
Text1 Name lstItem
Name cmdTambah
Command1
Caption &Tambah
Name cmdPerbaiki
Command2
Caption &Perbaiki
Name cmdHapus
Command3
Caption &Hapus
Name cmdSimpankeFile
Command4
Caption &Simpan ke file
Name cmdSimpan
Command5
Caption &Simpan

Koding yang akan dilakukan :

Membuat deklarasi type dan variabel pada bagian General Declaration

Option Explicit 'Setiap variabel harus dideklarasikan

'Deklarasi enumerated type


Private Enum Flag
flNone = 0
flAdd = 1 'Tambah data
flEdit = 2 'Perbaiki data
End Enum

'Deklarasi variabel form level


Dim Aksi As Integer 'Digunakan untuk menandai aksi yang dibuat pemakai

Membaca dari file Negara.txt dan mengisikannya kedalam lstNegara, serta membuat
setting awal variabel pada Event Form Load

Private Sub Form_Load()


Dim sItem As String

If Dir("Negara.Txt") <> "" Then 'Jika file Negara.Txt telah ada

Open "Negara.txt" For Input As #1 'Buka text file untuk input

Do While Not EOF(1) 'Looping s/d Eof


Input #1, sItem 'baca 1 item
LstNegara.AddItem (sItem) 'tambahkan ke Listbox
Loop

Close #1 'Tutup text file

End If

Aksi = flNone 'Mula-mula pemakai belum melakukan aksi

78
Modul Visual Basic 6
[email protected]
End Sub

Melakukan koding untuk menangani event klik pada kontrol cmdTambah, adapun hal
yang perlu dilakukan adalah menandai Aksi sebagai flAdd dan mimindahkan fokus ke
txtItem.

Private Sub cmdTambah_Click()


Aksi = flAdd 'Aksi adalah flAdd
txtItem.SetFocus 'pindah fokus ke txtItem
End Sub

Melakukan koding untuk menangani event klik pada kontrol cmdPerbaiki, adapun hal
yang perlu dilakukan adalah memeriksa apakah pemakai ada memilih item yang
diperbaiki, kemudian memasukkan item yang diperbaiki ke txtItem, kemudian menandai
Aksi sebagai flEdit, kemudian memindahkan fokus ke txtItem.

Private Sub cmdPerbaiki_Click()

If LstNegara.Text = "" Then

MsgBox "Anda harus memilih Item" & vbCrLf & _


"yang akan diperbaiki", vbOKOnly + vbInformation

Else

txtItem = LstNegara.Text
txtItem.SetFocus
Aksi = flEdit

End If

End Sub

Melakukan koding untuk menangani event klik pada kontrol cmdHapus, adapauh hal
yang perlu dilakukan adalah memeriksa Aksi, apakah flAdd atau flEdit, jika flAdd, maka
tulisan dalam txtItem ditambahkan ke listbox, kalau flEdit maka item pada listbox
dihapus, dan tulisan pada txtItem ditambahkan, kemudian Aksi di set ke flNone dan isi
txtItem dikosongkan

Private Sub cmdSimpan_Click()


Dim Posisi As Integer

If Aksi = flAdd Then 'Jika Aksi adalah flAdd

LstNegara.AddItem (txtItem.Text) 'Tambahkan txtItem ke Listbox

ElseIf Aksi = flEdit Then 'Jika Aksi adalah flEdit

Posisi = LstNegara.ListIndex 'Ambil posisi aktif


LstNegara.RemoveItem (Posisi) 'Hapus item posisi tersebut
LstNegara.AddItem (txtItem.Text) 'Tambahkan txtItem ke Listbox

End If

Aksi = flNone 'Aksi diset ke flNone


txtItem.Text = "" 'kosongkan txtItem

End Sub

79
Modul Visual Basic 6
[email protected]
Melakukan koding untuk menangani event klik pada cmdHapus, dengan memeriksa
apakah ada item yang dipilih, kalau ada remove item tersebut,dan reset flag Aksi

Private Sub cmdHapus_Click()

If LstNegara.ListIndex < 0 Then 'Jika tidak ada yang dipilih

MsgBox "Anda harus memilih Item" & vbCrLf & _


"yang akan dihapus", vbOKOnly + vbInformation

Else 'Hapus item tersebut

LstNegara.RemoveItem LstNegara.ListIndex

End If

Aksi = flNone

End Sub

Melakukan koding untuk menangani event klik pada cmdSimpankeFile, dengan looping
dari item 0 s/d Listcount -1.

Private Sub cmdSimpanKeFile_Click()


Dim i As Integer

Open "Negara.txt" For Output As #1 'Buka file untuk ditulis

For i = 0 To LstNegara.ListCount - 1 'Dari item 0 s/d Listcount - 1

Print #1, LstNegara.List(i) 'tulis ke textfile

Next i

Close #1 'tutup text file

MsgBox "Proses simpan selesai", vbOKOnly + vbInformation

End Sub

2. Buatlah program yang menyimpan nama-nama propinsi didalam sebuah text file
Indonesia.txt, dimana setiap kali form diaktifkan, maka isi file Indonesia.txt akan dibaca
dan ditampilkan dalam suatu listbox, kemudian pemakai dapat melakukan tambah,
perbaiki maupun hapus item dalam listbox, dan isi daftar akan disimpan kembali ke file
Indonesia.txt setiap pemakai melakukan klik pada Simpan ke file.

80
Modul Visual Basic 6
[email protected]

Latihan 2

Judul : Memahami kontrol ComboBox yang diaplikasikan untuk


pengolahan data Peserta Indoprog-vb

1. Buatlah program untuk menyimpan data perserta indoprog-vb kesebuah random file
Peserta.Dat yang memiliki struktur sebagai berikut :

'Struktur data untuk random file


Private Type Peserta
Email As String * 30
nama As String * 30
Alamat As String * 40
Kota As String * 20
Propinsi As String * 20
Negara As String * 20
Tempat As String * 20
TglLahir As Date
Pria As Integer
End Type

Pada masing-masing textbox dibatasi panjang pengetikkan terbatas sesuai dengan


ukuran masing-masing field, seperti tampilan berikut :

81
Modul Visual Basic 6
[email protected]
Isi ComboBox cboNegara diisi dari file Negara.txt, dan Propinsi dari file Propinsi.txt,
sehingga menghasilkan tampilan sebagai berikut :

Petunjuk, lakukan hal tersebut pada Event Form_Load, adapun potongan programnya
adalah sebagai berikut :

Private Sub Form_Load()


Dim Item As String 'Variabel untuk membaca isi text file

'Isi cboNegara dengan file Negara.txt


Open "Negara.txt" For Input As #1 'Buka text file Negara.txt
Do While Not EOF(1)
Input #1, Item 'Baca ke item
cboNegara.AddItem (Item) 'Tambahkan item ke cboNegara
Loop
Close #1 'Tutup text file
'Isi cboPropinsi dengan file Propinsi.txt
Open "Propinsi.txt" For Input As #1
Do While Not EOF(1)
Input #1, Item
cboPropinsi.AddItem (Item)
Loop
Close #1
'Buka Random file Peserta.Dat
Open "Peserta.Dat" For Random As #1 Len=Len(DatPeserta)
JlhRec = LOF(1) / Len(DatPeserta)
If JlhRec > 0 Then
Posisi = 1
Else
Posisi = 0
End If

Call Tampil 'Jalankan Sub Tampil

End Sub

Untuk koding pada event-event tombol harus anda buat sendiri dengan mempelajari
dan mencontoh Latihan pada Modul-modul sebelumnya untuk kemajuan anda sendiri.
82
Modul Visual Basic 6
[email protected]
Catatan : Fasilitas Find adalah mencari berdasarkan Nama.

Latihan 3

Judul : Tantangan penyempurnaan Program Peserta Indoprog-vb

1. Buka kembali program Latihan1 diatas, jalankan program diatas, dan carilah
kelemahan-kelemahan yang ada, serta lengkapi program diatas untuk menutupi lubang
kelemahan tersebut.

2. Lengkapi program Latihan2 dengan kemampuan memeriksa apakah data yang


dimasukkan telah ada pada random file atau tidak, adapun kunci yang digunakan
adalah alamat Email pada saat penyimpanan.

3. Lengkapi program Latihan2 dengan kemampuan Find Next, dimana mencari data
memenuhi syarat yang berikutnya.

4. Buatlah semua form-form diatas ditampilkan ditengah layar pada saat di jalankan.

Kontrol Standard (bagian 3)


Image
Digunakan untuk menampilkan gambar dalam format bitmaps (BMP), device
independent bitmaps (DIB), metafiles (WMF), enhanced metafiles (EMF), GIF dan
JPEG compressed files, dan icons (ICO dan CUR).

Properti Fungsi
BorderStyle Digunakan untuk menentukan jenis border yang digunakan (0 - None, 1 - Fixed
83
Modul Visual Basic 6
[email protected]
Single)

Digunakan untuk menentukan icon yang digunakan pada operasi drag-n-drop


DragIcon
pada kontrol label
DragMode Menentukan modus drag-n-drop (0 - manual, 1 - automatic)
Menentukan apakah kontrol dapat menerima event yang dibuat oleh pemakai,
Enabled
misalnya event Click, MouseDown, MouseUp, dll.
Height Digunakan untuk menentukan tinggi dari kontrol
Digunakan untuk menentukan nomor index, jika kontrol tersebut merupakan
Index
kontrol array.
Left Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse
MouseIcon berada diatas kontrol label tersebut, properti ini berarti bila properti MousePointer
diset menjadi (99 - Custom)
Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse
MousePointer
pointer berada diatas kontrol label tersebut.
Digunakan untuk menentukan apakah gambar disesuaikan dengan ukuran
kontrol (gambar dapat menggalami pengecilan maupun pembesaran)

Stretch

Digunakan untuk menentukan gambar dalam image, atau mengambil gambar


Picture
dalam image.
Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang
Tag
berkaitan dengan kontrol picture tersebut
Digunakan untuk menentukan tip tulisan ketika mouse pointer berada diatas
ToolTipText
kontrol
Top Digunakan untuk menentukan jarak atas kontrol dari kontainernya.
Digunakan untuk menentukan apakah kontrol label tersebut Visible atau tidak
Visible
(False, True)
Width Digunakan untuk menentukan lebar kontrol label

Menampilkan gambar kedalam kontrol image

84
Modul Visual Basic 6
[email protected]
Pada saat design anda dapat mengisikan gambar kedalam image box dengan
menggunakan properti Picture, sedangkan pada runtime anda dapat menggunakan
fungsi LoadPicture(namafile) untuk memuat gambar ke properti Picture dari kontrol
image, contoh :

MyImage.Picture = LoadPicture("C:\Grafik\Indoprog.gif")

Catatan :

Fungsi LoadPicture(namafile) digunakan untuk memuat file grafik dengan format grafik
bitmap (.bmp), icon (.ico), run-length encoded (.rle), metafile (.wmf), enhanced metafiles
(.emf), GIF, JPEG (.jpg).

Mengambil gambar dari Clipboard ke kontrol image

Anda dapat menggunakan metoda GetData(option) dari object Clipboard untuk


mengambil isi Clipboard ke suatu kontrol image, contoh :

MyImage.Picture = Clipboard.GetData

Catatan :

Metoda GetData Mengembalikan suatu grafik dari objek Clipboard, format adalah suatu
konstanta optional yang menentukan format grafik. Jika format adalah 0 (nol) atau
diabaikan, GetData secara otomatis.

argumen format Optional. Suatu konstanta atau nilai yang menunjukkan format grafik
pada clipboard, Jika format 0 (nol) atau diabaikan, GetData otomatis menggunakan
format yang sesuai. Adapun nilai konstanta untuk argumen format Optional adalah
sebagai berikut :

Konstanta Nilai Keterangan


vbCFBitmap 2 Bitmap (.bmp)
vbCFMetafile 3 Metafile (.wmf)
vbCFDIB 8 Device-independent bitmap (DIB)
vbCFPalette 9 Color palette

Mengosongkan kontrol image

Untuk mengosongkan kontrol image pada saat runtime, anda dapat menggunakan
fungsi LoadPicture, tanpa menggunakan argumen nama file, contoh :

MyImage.Picture = LoadPicture

Anda dapat juga menggunakan fungsi LoadPicture tanpa argumen untuk memeriksa
apakah kontrol image dalam keadaan kosong atau tidak.

If MyImage.Picture = LoadPicture Then


MsgBox "Gambar harus diisi"
Endif

85
Modul Visual Basic 6
[email protected]
Menyimpan gambar dalam kontrol image ke file

Anda dapat menggunakan perintah SavePicture gambar, namafile untuk menyimpan


gambar kedalam file dengan format BMP, contoh :

SavePicture MyImage.Picture, "C:\Grafik\Indoprog.bmp"

Catatan :

Perintah SavePicture akan selalu menyimpan gambar ke format bitmap (.bmp), tanpa
memperhatikan format sumber gambar.

PictureBox
Kalau image digunakan untuk menampilkan gambar, demikian juga picturebox. Selain
menampilkan gambar picture box mendukung berbagai metoda untuk operasi grafik,
dan dapat berfungsi sebagai kontainer bagi kontrol-kontrol lain.

Contoh :

Dihasilkan oleh pemakaian metoda Line, dan Pset pada PictureBox

Private Sub cmdGrafik_Click()


MyPicture.ScaleMode = 0
MyPicture.ScaleWidth = 360
MyPicture.ScaleHeight = 2
MyPicture.ScaleLeft = 0
MyPicture.ScaleTop = -1
MyPicture.Line (0, 0)-(360, 0)
For i = 0 To 360
MyPicture.PSet (i, -Sin(i * 3.14 / 180))
MyPicture.PSet (i, -Cos(i * 3.14 / 180))
Next i
End Sub

Berikut ini adalah picturebox sebagai kontainer.

86
Modul Visual Basic 6
[email protected]

Properti Fungsi
Digunakan untuk menentukan bagaimana pemerataan objek pada form (0 -
Align
None, 1 - Align Top, 2 - Align Bottom, 3 - Align Left, 4 - Align Right)
Appearance sda
Digunakan untuk menentukan warna latar belakang.
BackColor

Digunakan untuk menentukan apakah grafik yang dihasilkan dengan metoda


AutoRedraw
pengambaran (Line, Circle, PSet) akan dijadikan sebagai bitmap yang tetap.
Digunakan untuk menentukan apakah ukuran kontrol otomatis disesuaikan
AutoSize
dengan ukuran objek picture.
BorderStyle sda
Digunakan untuk menentukan apakan event Validate di aktifkan ketika kontrol
CauseValidation
akan kehilangan fokus (False, True)
Digunakan untuk menentukan icon yang digunakan pada operasi drag-n-drop
ClipControl
pada kontrol label
Digunakan untuk menentukan icon yang digunakan pada operasi drag-n-drop
DragIcon
pada kontrol label
DragMode Menentukan modus drag-n-drop (0 - manual, 1 - automatic)
Menentukan jenis modus yang digunakan pada saat pengambaran grafik dalam
DrawMode picture dimana merupakan interaksi antara warna latar belakang dengan warna
garis sehingga menghasilkan warna baru.
DrawStyle Menentukan style garis yang digunakan dalam mengambar garis.
DrawWidth Menentukan ukuran garis pengambaran
Menentukan apakah kontrol label dapat menerima event yang dibuat oleh
Enabled
pemakai, misalnya event Click, MouseDown, MouseUp, dll.
FillColor Menentukan warna pengisian grafik
Menentukan pola pengisian grafik
FillStyle

Font Digunakan untuk menentukan jenis font, ukuran, style, dll


ForeColor Digunakan untuk menentukan warna tulisan

87
Modul Visual Basic 6
[email protected]

Contoh :

Private Sub cmdGrafik_Click()


MyPicture.ScaleMode = 0
MyPicture.ScaleWidth = 360
MyPicture.ScaleHeight = 2
MyPicture.ScaleLeft = 0
MyPicture.ScaleTop = -1
MyPicture.ForeColor = vbBlack 'Set ForeColor jadi hitam
MyPicture.Line (0, 0)-(360, 0) 'Garis hitam
For i = 0 To 360
MyPicture.ForeColor = vbRed
MyPicture.PSet (i, -Sin(i * 3.14 / 180)) 'Titik Merah
MyPicture.ForeColor = vbBlue
MyPicture.PSet (i, -Cos(i * 3.14 / 180)) 'Titik Biru
Next i
End Sub
Digunakan untuk menentukan apakah latar belakang tulisan transparant atau
tidak.
Private Sub MyCommand_Click()
MyPicture.FontTransparent = True
FontTransparant
MyPicture.Print "Transparent"
MyPicture.FontTransparent = False
MyPicture.Print "Tidak Transparent"
End Sub
Height Digunakan untuk menentukan tinggi dari kontrol
Digunakan untuk menentukan nomor index, jika kontrol tersebut merupakan
Index
kontrol array.
Left Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse
MouseIcon berada diatas kontrol label tersebut, properti ini berarti bila properti MousePointer
diset menjadi (99 - Custom)
Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse
MousePointer
pointer berada diatas kontrol label tersebut.
Picture Digunakan untuk menentukan gambar dalam picture box.
ScaleMode Digunakan untuk menentukan unit skala yang digunakan (0 - User, 1 - Twip, 2 -
Point, 3 - Pixel, 4 - Character, 5 - Inch, 6 - Milimeter, 7 - Centimeter)

1 inchi = 1440 Twip


1 cm = 567 Twip

1 inchi = 72 point

1 character = (120 Twip untuk lebar, 240 untuk tinggi)

88
Modul Visual Basic 6
[email protected]

1 cm = 1000 unit (Himetric)

Anda dapat membuat modus skala sendiri dengan menset properti ini menjadi 0 -
User, dan skala anda dapat ditentukan pada ScaleWidth dan ScaleHeight,
perhatikan kembali contoh Grafik sinus sebelumnya.
Digunakan untuk menentukan nilai koodinat horizontal paling kiri, anda dapat
ScaleLeft menggunakan properti ini untuk menentukan koordinat paling kiri dari suatu
sumbu X.
Digunakan untuk menentukan nilai koodinat vertikal paling atas, anda dapat
ScaleTop menggunakan properti ini untuk menentukan koordinat paling atas dari suatu
sumbu Y.
Digunakan untuk menentukan tinggi sumbu vertikal. Menentukan panjang sumbu
ScaleHeight
Y.
Digunakan untuk menentukan panjang sumbu horizontal. Menentukan panjang
ScaleWidth
sumbu X.
Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang
Tag
berkaitan dengan kontrol picture tersebut
Digunakan untuk menentukan tip tulisan ketika mouse pointer berada diatas
ToolTipText
kontrol
Top Digunakan untuk menentukan jarak atas kontrol dari kontainernya.
Digunakan untuk menentukan apakah kontrol label tersebut Visible atau tidak
Visible
(False, True)
Width Digunakan untuk menentukan lebar picturebox

Properti Fungsi
Digunakan untuk mendapatkan/menentukan posisi X yang sedang aktif,
CurrentX
digunakan untuk perintah Print
Digunakan untuk mendapatkan/menentukan posisi Y yang sedang aktif,
CurrentY
digunakan untuk perintah Print

Pengolahan gambar dalam Picturebox dapat dicontoh dari contoh pada Image diatas.

Metoda Grafik pada Picturebox

Salah satu perbedaan antara Image dengan Picturebox adalah tersedianya berbagai
metoda pengambaran grafik pada Picturebox, antara lain :

Metoda Keterangan
Mengambarkan sebuah lingkaran dengan berpusat pada
koordinat x,y dan jari-jari r dengan warna garis, mulai dari sudut
Circle(x,y),r,warna,awal,akhir,Aspek
awal, sampai sudut akhir yang dinyatakan dalam radian), serta
aspek perbandingkan tinggi dengan lebar.
Cls Membersihkan Picturebox dengan warna BackColor
Mengambarkan garis tunggal dari koordinat x1,y1 sampai
Line (x1,y1) - (x2, y2),warna
dengan x2,y2
Line (x1,y1) - (x2, y2),warna,B Mengambarkan kotak dari koordinat x1,y1 sampai dengan x2,y2
Mengambarkan kotak berisi dari koordinat x1,y1 sampai dengan
Line (x1,y1) - (x2, y2),warna,BF
x2,y2
Mencetak dot (titik) pada koordinat tertentu pada Form,
PSet (x,y)
Picturebox, dan Printer, pada koordinat yang ditentukan
89
Modul Visual Basic 6
[email protected]
Mencetak dot (titik) pada koordinat relatif terhadap posisi dot
PSet Step (x,y)
sebelunnya.
Mendapatkan warna dot (titik) tertentu pada layar

Point(x,y) Contoh :

Color& = MyPicture.Point(100,200)
Menyebabkan kontrol picture dan bitmap tetapnya digambar
Refresh
ulang.

Event Paint Pada PictureBox

Event Paint akan diaktifkan ketika PictureBox mengalami pengambaran. Anda dapat
menggunakan event ini untuk menjalankan fungsi-fungsi tertentu ketika PictureBox
digambar.

Metoda PaintPicture Pada PictureBox

Metoda PaintPicture merupakan metoda yang sangat bermanfaat untuk melakukan


operasi seperti pembesaran, pengecilan, duplikasi sebagian gambar berdasarkan
koordinat tertentu. Adapun sintax penulisannya adalah sebagai berikut :

PictureboxTujuan.PaintPicture PictureboxAsal, posisiXtujuan, posisiYtujuan, [lebarTujuan], _


[tinggiTujuan], [koordinatXAsal], [KoordinatYAsal], [lebarAsal], [tinggiAsal]

Private Sub cmdCopy_Click()


Tujuan.PaintPicture MyPicture.Image, _
0, 0, Tujuan.Width, Tujuan.Height, _
0, 0, MyPicture.Width, MyPicture.Height
End Sub

Menyimpan Grafik dalam Picturebox ke file

Untuk meyimpan ataupun mengambil grafik yang terdapat dalam suatu picturebox, baik
yang di muat dari suatu file gambar, maupun yang dibuat dengan menggunakan
metoda pengambaran, Anda dapat menggunakan properti image.

Contoh :

SavePicture MyPicture.Image, "C:\Grafik.bmp"

90
Modul Visual Basic 6
[email protected]

Fungsi Bantu pada Visual Basic


Fungsi Bantu Konversi
IsNumeric(ekspresi)

Mengembalikan nilai boolean yang menunjukkan suatu ekspresi dapat dievaluasi


sebagai numerik

IsEmpty(ekspresi)

Mengembalikan nilai boolean yang menunjukkan suatu variabel telah diinitialiasi,


biasanya fungsi ini digunakan untuk memeriksa variabel yang dideklarasikan sebagai
Variant.

Contoh :

Dim A as Variant
If IsEmpty(A) Then
Msgbox "Variabel A Empty" 'Message akan muncul karena A belum terinisialisai
End If
A=1
If IsEmpty(A) Then
Msgbox "Variabel A masih Empty" 'Tidak akan muncul lagi karena A telah
'terinisialisasi sebagai Integer
End If
Dim B as Integer
If IsEmpty(B) Then
Msgbox "Variabel B Emtpy" 'Tidak akan muncul karena B adalah Integer
End If

IsNull(ekspresi)

Mengembalikan nilai boolean yang menunjukkan suatu ekspresi mengandung data


yang tidak valid, biasanya digunakan untuk memeriksa isi field recordset.

IsArray(varname)

Mengembalikan suatu nilai boolean yang menunjukan suatu variabel adalah suatu
array.

IsDate(ekspresi)

Mengembalikan suatu nilai boolean yang menunjukan suatu ekspresi dapat dikonversi
ke date.

IsError(ekspresi)

Mengembalikan suatu nilai boolean yang menunjukkan suatu ekspresi adalah nilai error

IsObject(ekspresi)

Mengembalikan suatu nilai boolean yang menunjukkan suatu ekspresi mengacu pada
suatu OLE Automation object.
91
Modul Visual Basic 6
[email protected]

IsMissing(argname)

Mengembalikan suatu nilai boolean yang menunjukan suatu argumen optional pada
procedure ada dilewatkan atau tidak

CBool(ekspresi)

Konversi suatu ekspresi ke boolean

Contoh :

A = 5: B = 5 ' Inisialiasi variabel


Check = CBool(A = B) ' Check berisi nilai True

A=0
Check = CBool(A) ' Check berisi False.

CByte(ekspresi)

Konversi ekspresi ke Byte

Contoh :

MyDouble = 125.5678 ' MyDouble adalah suatu nilai Double


MyByte = CByte(MyDouble) ' MyByte berisi 126.

CCur(ekspresi)

Konversi suatu ekspresi ke Currency

Contoh :

MyDouble = 543.214588 ' MyDouble adalah suatu nilai Double.


MyCurr = CCur(MyDouble * 2) ' Konversi hasil MyDouble * 2
' (1086.429176) menjadi suatu
' Currency (1086.4292).

CDate(date)

Konversi suatu ekspresi ke date

Contoh :

MyDate = "February 12, 1969" ' Definisi waktu dalam string


MyShortDate = CDate(MyDate) ' Konversi ke type data Date
MyTime = "4:35:47 PM" ' Definisi waktu dalam string
MyShortTime = CDate(MyTime) ' Konversi ke type data Date

CDbl(ekspresi)

92
Modul Visual Basic 6
[email protected]
Konversi suatu ekspresi ke Double

Contoh :

MyCurr = CCur(234.456784) ' MyCurr adalah nilai Currency.


MyDouble = CDbl(MyCurr * 8.2 * 0.01) ' Konversi hasil ke suatu Double.

CInt(ekspresi)

Konversi suatu ekspresi ke Integer

Contoh :

MyDouble = 2345.5678 ' MyDouble adalah nilai Double.


MyInt = CInt(MyDouble) ' MyInt berisi nilai 2346.

CLng(ekspresi)

Konversi suatu ekspresi ke Long

Contoh :

MyVal1 = 25427.45: MyVal2 = 25427.55 ' MyVal1, MyVal2 adalah Double


MyLong1 = CLng(MyVal1) ' MyLong1 berisi nilai 25427.
MyLong2 = CLng(MyVal2) ' MyLong2 berisi nilai 25428.

CSng(ekspresi)

Konversi suatu ekspresi ke single

Contoh :

' MyDouble1, MyDouble2 adalah Double.


MyDouble1 = 75.3421115: MyDouble2 = 75.3421555
MySingle1 = CSng(MyDouble1) ' MySingle1 berisi nilai 75.34211.
MySingle2 = CSng(MyDouble2) ' MySingle2 berisi nilai 75.34216.

CStr(ekspresi)

Konversi suatu ekspresi ke string

Contoh :

MyDouble = 437.324 ' MyDouble adalah Double


MyString = CStr(MyDouble) ' MyString berisi nilai "437.324".

CVar(ekspresi)

Konversi suatu ekspresi ke Variant

Contoh :

MyInt = 4534 ' MyInt adalah suatu Integer.


MyVar = CVar(MyInt & "000") ' MyVar berisi nilai string 4534000.

93
Modul Visual Basic 6
[email protected]
Asc(string)

Mengembalikan kode character dari huruf pertama di suatu string.

Contoh :

MyNumber = Asc("A") ' Mengembalikan 65.


MyNumber = Asc("a") ' Mengembalikan 97.
MyNumber = Asc("Apple") ' Mengembalikan 65.

Chr(charcode)

Mengembalikan karakter dari suatu kode karakter

Contoh :

MyChar = Chr(65) ' Mengembalikan A.


MyChar = Chr(97) ' Mengembalikan a.
MyChar = Chr(62) ' Mengembalikan >.
MyChar = Chr(37) ' Mengembalikan %.

Format(ekspresi[, format[, hariPertamaDariMinggu[, mingguPertamaDariTahun]]])

Memformat suatu ekspresi berdasarkan ekspresi format

Contoh :

MyTime = #17:04:23#
MyDate = #January 27, 1993#

' Mengembalikan waktu sistem dalam format long time


MyStr = Format(Time, "Long Time")

' Mengembalikan tannggal sistem dalam format long date


MyStr = Format(Date, "Long Date")

MyStr = Format(MyTime, "h:m:s") ' Mengembalikan "17:4:23".


MyStr = Format(MyTime, "hh:mm:ss AMPM") ' Mengembalikan "05:04:23 PM".
MyStr = Format(MyDate, "dddd, mmm d yyyy") ' Mengembalikan "Wednesday, Jan 27 1993".

'Jika format tidak tersedia, suatu string dikembalikan.


MyStr = Format(23) ' Mengembalikan "23".

' Format User-defined


MyStr = Format(5459.4, "##,##0.00") ' Mengembalikan "5,459.40".
MyStr = Format(334.9, "###0.00") ' Mengembalikan "334.90".
MyStr = Format(5, "0.00%") ' Mengembalikan "500.00%".
MyStr = Format("HELLO", "<") ' Mengembalikan "hello".
MyStr = Format("This is it", ">") ' Mengembalikan "THIS IS IT".

Hex(number)
Oct(number)

Mengembalikan string yang mewakili Octal atau Hexa dari suatu bilangan

Contoh :

94
Modul Visual Basic 6
[email protected]
MyHex = Hex(5) ' Mengembalikan 5.
MyHex = Hex(10) ' Mengembalikan A.
MyHex = Hex(459) ' Mengembalikan 1CB.
MyOct = Oct(4) ' Mengembalikan 4.
MyOct = Oct(8) ' Mengembalikan 10.
MyOct = Oct(459) ' Mengembalikan 713.

Str(number)

Mengembalikan string yang mewakili suatu angka.

Contoh :

MyString = Str(459) ' Mengembalikan " 459".


MyString = Str(-459.65) ' Mengembalikan "-459.65".
MyString = Str(459.001) ' Mengembalikan " 459.001".

Val(string)

Mengembalikan angka yang terkandung dalam suatu string.

Contoh :

MyVal =Val(" 1615 198th Street N.E.") ' Mengembalikan 1615198


MyVal =Val("&HFFFF") ' Mengembalikan -1
MyVal =Val("2457") ' Mengembalikan 2457.
MyVal =Val(" 2 45 7") ' Mengembalikan 2457.
MyVal =Val("24 and 57") ' Mengembalikan 24.

Fungsi Bantu Waktu


Now

Mengembalikan suatu Variant (Date) yang menunjukkan tanggal dan waktu


berdasarkan sistem komputer.

Time

Mengembalikan waktu sistem sekarang

Timer

Mengembalikan suatu bilangan yang menunjukan jumlah detik sejak tengah malam

Date

Mengembalikan tanggal sistem sekarang

Time = Time
Date = Date

Mengatur waktu atau tanggal sistem

Untuk sistem yang menjalankan Microsoft Windows 95, tanggal yang dibutuhkan harus

95
Modul Visual Basic 6
[email protected]
berupa tanggal dari 1 Jan 1998 sampai 31 Des 2099. Untuk sistem yang menjalankan
Microsoft Windows NT, tanggal yang dibutuhkan harus berupa tanggal dari 1 Jan 1980
sampai 31 Desember 2079.

Hour(time)
Minute(time)
Second(time)

Mengembalikan suatu Variant (Integer) berupa bilangan 0 s/d 23 untuk jam, 0 s/d 59
untuk menit, dan 0 s/d 59 untuk detik.

Day(date)
Month(date)
Year(date)

Mengembalikan suatu Variant (Integer) berupa bilangan 1 s/d 31 untuk bulan, 1 s/d 12
untuk bulan, dan tahun.

Weekday(date, [hariPertamaDariMinggu])

Mengembalikan suatu Variant (Integer) yang menunjukkan hari dari minggu

hariPertamaDariMinggu Optional. suatu konstanta yang menunjukkan hari pertama dari


minggu, jika tidak ditentukan, maka vbSunday diasumsikan.

Konstanta Nilai Keterangan


vbUseSystem 0 Menggunakan setting NLS API
vbSunday 1 Minggu (default)
vbMonday 2 Senin
vbTuesday 3 Selasa
vbWednesday 4 Rabu
vbThursday 5 Kamis
vbFriday 6 Jumat
vbSaturday 7 Sabtu

Nilai yang dikembalikan :

Konstanta Nilai Keterangan


vbSunday 1 Minggu
vbMonday 2 Senin
vbTuesday 3 Selasa
vbWednesday 4 Rabu
vbThursday 5 Kamis
vbFriday 6 Jumat
vbSaturday 7 Sabtu

DateAdd(interval, number, date)

Mengembalikan suatu Variant (Date) yang mana merupakan hasil penjumlahan.

96
Modul Visual Basic 6
[email protected]
Bagian Keterangan
interval Ekspresi string yang menunjukkan interval waktu yang ingin dijumlahkan (Perlu)
Ekspresi numerik yang merupakan jumlah dari interval yang ingin dijumlahkan. Nilai Positif
number
menunjukan (tanggal berikutnya), Nilai Negatif menunjukan (tanggal sebelumnya) (Perlu)
Suatu Variant (Date) atau literal yang merupakan tanggal dimana interval akan dijumlahkan
date
padanya. (Perlu)

Setting argumen untuk interval :

Setting Keterangan
yyyy Tahun
q Triwulan
m Bulan
y Hari dari tahun
d Hari
w Hari dari minggu
ww Minggu
h Jam
n Menit
s Detik

Contoh :

DateAdd("m", 1, "31-Jan-95") 'mengembalikan 28-Feb-95

DateDiff(interval, date1, date2)


Mengembalikan suatu Variant (Long) untuk menunjukkan bilangan dari interval waktu
antara dua tanggal.

Latihan 1

Judul : Memanfaatkan kontrol image untuk menampilkan Foto


perserta

Pada Latihan ini kita akan meningkatkan fasilitas project Modul 4 Latihan 1 sebelumnya
dengan kemampuan menampilkan foto dan menyimpan foto perserta. Adapun foto dari
masing-masing peserta akan disimpan pada file-file eksternal yang diberi nama
Fotox.bmp, dimana x disesuaikan dengan nomor record data dalam random file.
Misalnya pada record 1, maka nama file fotonya adalah Foto1.bmp, record 2 nama file
fotonya adalah Foto2.bmp, dst.

1. Bukalah project Modul 4 Latihan 1, dan tambahkan kontrol image serta command
sehingga menjadi sebagai berikut :

97
Modul Visual Basic 6
[email protected]

Kontrol Properti Value


name imgFoto
image1
stretch True
name cmdPaste
command1
caption &Paste

2. Pada bagian general declaration tambahkan deklarasi variabel cFileFoto yang akan
digunakan untuk menyimpan nama file foto. Adapun penamaan file foto adalah
Fotox.bmp, dimana x disesuaikan dengan nomor record data dalam random file.
Misalnya pada record 1, maka nama file fotonya adalah Foto1.bmp, record 2 nama file
fotonya adalah Foto2.bmp, dst.

Dim cFileFoto As String

Sehingga menjadi seperti berikut :

'Deklarasi variabel Form Level


Dim DatPeserta As Peserta
Dim Posisi As Integer
Dim JlhRec As Integer
Dim Aksi As Integer
Dim cFileFoto As String 'Ini yang ditambahkan

3. Lakukan koding untuk event klik pada cmdPaste yang berfungsi untuk mengisi
kontrol imgFoto dengan isi dari Clipboard.

Private Sub cmdPaste_Click()


imgFoto.Picture = Clipboard.GetData 'Paste data dari Clipboard ke kontrol image
End Sub

4. Tambahkan koding pada bagian cmdUpdate klik dimana berfungsi menyimpan


gambar dalam imgFoto ke media penyimpanan dengan nama Fotox.bmp, dimana x
disesuaikan dengna nomor posisi record penulisan. Misalnya pada record 1, maka
nama file fotonya adalah Foto1.bmp, record 2 nama file fotonya adalah Foto2.bmp, dst.

cFileFoto = "Foto" & Posisi & ".bmp" 'Buat nama file Fotox.bmp
If imgFoto.Picture <> LoadPicture Then 'Periksa apakah kontrol image kosong
98
Modul Visual Basic 6
[email protected]
SavePicture imgFoto.Picture, cFileFoto 'Simpan gambar ke file dengan nama yang
End If 'telah dibuat

Sehingga menjadi sebagai berikut :

Private Sub cmdUpdate_Click()


If Aksi = flAdd Or Aksi = flEdit Then
If Trim$(txtEmail.Text) = "" Then
MsgBox "Alamat Email tidak bisa kosong"
txtEmail.SetFocus
Exit Sub
End If
If Trim$(txtNama.Text) = "" Then
MsgBox "Nama tidak bisa kosong"
txtNama.SetFocus
Exit Sub
End If
If Aksi = flAdd Then
JlhRec = JlhRec + 1
Posisi = JlhRec
End If
DatPeserta.Email = txtEmail.Text
DatPeserta.nama = txtNama.Text
DatPeserta.Alamat = txtAlamat.Text
DatPeserta.Kota = txtKota.Text
DatPeserta.Negara = cboNegara.Text
DatPeserta.Propinsi = cboPropinsi.Text
DatPeserta.Tempat = txtTempat.Text
DatPeserta.TglLahir = txtTglLahir.Text
DatPeserta.Pria = chkPria.Value
Put #1, Posisi, DatPeserta
cFileFoto = "Foto" & Posisi & ".bmp" 'Bagian yang ditambahkan
If imgFoto.Picture <> LoadPicture Then
SavePicture imgFoto.Picture, cFileFoto
End If
Call Kunci
End If
End Sub

5. Pada Sub Tampil tambahkan koding yang berfungsi membaca file foto dari disk dan
menampilkan ke kontrol image. Adapun proses yang dilakukan adalah membentuk
nama file foto berdasarkan posisi record yang ditampilkan, kemudian memeriksa
keberadaan file foto tersebut dalam media penyimpanan, jika ada, maka baca dan
tampilkan pada kontrol imgFoto.

cFileFoto = "Foto" & Posisi & ".bmp" 'Bentuk nama file yaitu Fotox.bmp
If Dir(cFileFoto) <> "" Then 'Periksa keberadaan file tersebut
imgFoto.Picture = LoadPicture(cFileFoto) 'Baca dan tampilkan
Else
imgFoto.Picture = LoadPicture
End If

Sehingga menjadi sebagai berikut :

Sub Tampil()
If Posisi > 0 Then
Get #1, Posisi, DatPeserta
txtEmail.Text = DatPeserta.Email
txtNama.Text = DatPeserta.nama
txtAlamat.Text = DatPeserta.Alamat
txtKota.Text = DatPeserta.Kota
99
Modul Visual Basic 6
[email protected]
cboNegara.Text = DatPeserta.Negara
cboPropinsi.Text = DatPeserta.Propinsi
txtTempat.Text = DatPeserta.Tempat
txtTglLahir.Text = DatPeserta.TglLahir
chkPria.Value = DatPeserta.Pria
cFileFoto = "Foto" & Posisi & ".bmp" 'Ini yang ditambahkan
If Dir(cFileFoto) <> "" Then
imgFoto.Picture = LoadPicture(cFileFoto)
Else
imgFoto.Picture = LoadPicture
End If
Call Kosong
End If
Aksi = flNone
Call Kunci
End Sub

6. Jalankan software paintbrush, dan buka suatu file gambar, select suatu lokasi
tertentu, kemudian klik Edit Copy.

7. Jalankan project diatas, dan klik pada Edit, kemudian klik pada Paste, dan Klik
Update. Tutup program dan jalankan kembali, apakah foto masih ada disana ?

Latihan 2

Judul : Memahami properti dan metoda serta event pada picturebox

1. Buatlah grafik 2 Sin x (warna hijau), Cos x (warna biru), dan 2 Sin x + Cos x (warna
merah), dengan sumbu Y dari -3 s/d 3, dan Sumbu X dari 0 sampai 720 derajat.

Solusi :

1. Atur ScaleMode Picturebox ke 0 - User

MyPicture.ScaleMode = 0

2. Atur ScaleWidth (panjang Sumbu X) Picturebox ke 720 ( 0 s/d 720 derajat)

MyPicture.ScaleWidth = 720

3. Atur ScaleHeight (panjang Sumbu Y) Picturebox ke 6 (-3 s/d 3)

100
Modul Visual Basic 6
[email protected]
MyPicture.ScaleHeight = 6

4. Atur ScaleLeft (koordinat paling kiri Sumbu X) Picturebox ke 0

MyPicture.ScaleLeft = 0

5. Atur ScaleTop (koordinat paling atas Sumbu Y) Picturebox ke -3 (Harus disadari


bahwa perbedaan antara koordinat sumbu Y dimatematika dengan koordinat sumbu di
PictureBox)

MyPicture.ScaleTop = -3

6. Gambarkan sumbu Y, dengan metode Line, mulai dari koordinat 0,0 s/d 720,0

MyPicture.Line (0, 0)-(720, 0)

7. Lakukan looping mulai dari 0 s/d 720 untuk menggambarkan titik-titik 2 Sin x, Cos x,
dan 2 Sin x + Cos x.

For i = 0 To 720
MyPicture.ForeColor = vbGreen 'Warna Hijau
MyPicture.PSet (i, -2 * Sin(i * 3.14 / 180))
MyPicture.ForeColor = vbBlue 'Warna Biru
MyPicture.PSet (i, -Cos(i * 3.14 / 180))
MyPicture.ForeColor = vbRed 'Warna Merah
MyPicture.PSet (i, -2 * Sin(i * 3.14 / 180) - Cos(i * 3.14 / 180))
Next i

Sehingga menjadi seperti berikut ini :

Private Sub cmdGrafik_Click()


MyPicture.ScaleMode = 0
MyPicture.ScaleWidth = 720
MyPicture.ScaleHeight = 6
MyPicture.ScaleLeft = 0
MyPicture.ScaleTop = -3
MyPicture.Line (0, 0)-(720, 0)
For i = 0 To 720
MyPicture.ForeColor = vbGreen
MyPicture.PSet (i, -2 * Sin(i * 3.14 / 180))
MyPicture.ForeColor = vbBlue
MyPicture.PSet (i, -Cos(i * 3.14 / 180))
MyPicture.ForeColor = vbRed
MyPicture.PSet (i, -2 * Sin(i * 3.14 / 180) - Cos(i * 3.14 / 180))
Next i
End Sub

2. Jalankan program dan klik pada command Grafik, dan perhatikan hasilnya.

3. (Memahami metoda Refresh ) Tambahkan sebuah tombol refresh, dan lakukan


koding sebagai berikut :

101
Modul Visual Basic 6
[email protected]

Private Sub cmdRefresh_Click()


MyPicture.Refresh
End Sub

4. Jalankan kembali program, dan klik pada command Grafik, dan klik pada command
Refresh, dan perhatikan hal yang terjadi.

5. (Memahami properti AutoRedraw) Lakukan perbaikan terhadap koding cmdGrafik


sehingga menjadi sebagai berikut :

Private Sub cmdGrafik_Click()


MyPicture.ScaleMode = 0
MyPicture.ScaleWidth = 720
MyPicture.ScaleHeight = 6
MyPicture.ScaleLeft = 0
MyPicture.ScaleTop = -3
MyPicture.AutoRedraw = True 'Ini yang ditambahkan
MyPicture.Line (0, 0)-(720, 0)
For i = 0 To 720
MyPicture.ForeColor = vbGreen
MyPicture.PSet (i, -2 * Sin(i * 3.14 / 180))
MyPicture.ForeColor = vbBlue
MyPicture.PSet (i, -Cos(i * 3.14 / 180))
MyPicture.ForeColor = vbRed
MyPicture.PSet (i, -2 * Sin(i * 3.14 / 180) - Cos(i * 3.14 / 180))
Next i
MyPicture.AutoRedraw = False 'Ini yang ditambahkan
End Sub

6. Jalankan kembali program, dan klik pada command Grafik, dan klik pada command
Refresh, dan perhatikan hal yang terjadi. Apa perbedaannya dengan yang sebelumnya.

7. (Memanfaatkan properti image) Tambahkan sebuah command Save pada project


anda, dan lakukan koding jika tombol tersebut di klik, maka akan menyimpan grafik
dalam picturebox ke file "Grafik.bmp"

102
Modul Visual Basic 6
[email protected]

Private Sub cmdSave_Click()


SavePicture MyPicture.Image, "Grafik.bmp"
End Sub

8. (Memahami event Paint) Tanamkan pada Form anda suatu Picturebox berukuran
1550 Twips x 1550 Twips, kemudian lakukan koding berikut pada Event Paint, dan
jalankan project tersebut, dan perhatikan picturebox anda.

Private Sub MyPicture_Paint()


MyPic.Circle (775, 775), 500
MyPic.Circle (550, 650), 50
MyPic.Circle (1000, 650), 50
MyPic.Circle (775, 700), 400, , 4, 5.6
End Sub

Latihan 3

Judul : Tantangan membuat Mari Menggambar

Buatlah program mari yang mampu menggambar bentuk Lingkaran, Persegi, Garis,
Titik, dan dapat menyimpan hasil ke suatu file bmp.

103
Modul Visual Basic 6
[email protected]

Berikut ini adalah contoh solusi untuk menggambar Lingkaran, yang lainnya adalah
tugas anda untuk melengkapinya.

Private Enum Gambar


None = 0
Lingkar = 1
Persegi = 2
Garis = 3
Titik = 4
End Enum

Dim Aksi As Gambar 'digunakan untuk mengenali aksi pemakai


Dim Tahap As Integer 'digunakan untuk menentukan tahap pengambaran
Dim Pusatx As Integer 'digunakan untuk Pusat Lingkaran
Dim Pusaty As Integer
Private Sub cmdCircle_Click()
Aksi = Lingkar 'tandai aksi sebagai menggambar lingkaran
Tahap = 1 'mulai dari tahap penentuan pusat lingkaran
End Sub
Private Sub PicKanvas_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Aksi = Lingkar Then 'jika aksi gambar lingkaran
If Tahap = 1 Then 'jika tahap 1
Pusatx = X 'simpan pusat lingkaran
Pusaty = Y
Tahap = 2 'tandai tahap berikutnya yaitu penentuan jari-jari
End If
End If
End Sub
Private Sub PicKanvas_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Aksi = Lingkar Then
If Tahap = 2 Then
PicKanvas.Refresh
jari = Sqr((Y - Pusaty) ^ 2 + (X - Pusatx) ^ 2)
PicKanvas.Circle (Pusatx, Pusaty), jari
End If
End If
End Sub
Private Sub PicKanvas_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Aksi = Lingkar Then
If Tahap = 2 Then
PicKanvas.Refresh
PicKanvas.AutoRedraw = True
jari = Sqr((Y - Pusaty) ^ 2 + (X - Pusatx) ^ 2)
PicKanvas.Circle (Pusatx, Pusaty), jari
PicKanvas.AutoRedraw = False

104
Modul Visual Basic 6
[email protected]
Aksi = None
End If
End If
End Sub

Jawaban Latihan 3

Judul : Tantangan membuat Mari Menggambar

Buatlah program mari yang mampu menggambar bentuk Lingkaran, Persegi, Garis,
Titik, dan dapat menyimpan hasil ke suatu file bmp.

Solusi :

Kita perlu mempersiapkan Enumerated Type yang akan digunakan untukm


menunjukkan aksi yang akan dilakukan berdasarkan klik pemakai pada tombol tertentu.
Enumerated Type ini kita ketik pada bagian General Declaration :

Private Enum Gambar


None = 0
Lingkar = 1
Persegi = 2
Garis = 3
Titik = 4
End Enum

Catatan :Tujuan pemakaian Enumerated Type untuk membuat program kita


menjadi lebih terstruktur dan mudah dibaca.

Selanjutnya kita deklarasikan variabel-variabel Form Level (dideklarasikan pada


General Declaration) yang berlaku bagi semua Sub yang ada dalam Form tersebut.

Dim Aksi As Gambar 'Menyimpan aksi yang akan dilakukan


Dim Tahap As Integer 'Menyimpan tahap pengambaran
Dim Pusatx As Integer 'Titik Awal (Persegi, Garis) Titik Pusat (Lingkar)
Dim Pusaty As Integer

105
Modul Visual Basic 6
[email protected]
Catatan : Untuk gambar lingkaran kita perlu titik pusat (PusatX,PusatY), untuk
Persegi dan Garis kita perlu titik Awal.

Untuk melakukan aksi pengambaran kita perlu membuat suatu General Procedure,
yang mana akan melakukan penggambaran sesuai dengan Aksi pemakai.

Private Sub Gambar(x, y)


Select Case Aksi 'Periksa Aksi yang akan dilakukan
Case Lingkar
jari = Sqr((y - Pusaty) ^ 2 + (x - Pusatx) ^ 2)
PicKanvas.Circle (Pusatx, Pusaty), jari
Case Persegi
PicKanvas.Line (Pusatx, Pusaty)-(x, y), , B
Case Garis
PicKanvas.Line (Pusatx, Pusaty)-(x, y)
Case Titik
PicKanvas.PSet (x, y)
End Select
End Sub

Catatan : Pada Lingkaran kita perlu menghitung jari-jari pengambaran dengan


menggunakan rumus Phytagoras.

Selanjutnya kita lakukan koding pada Event klik masing-masing Command Button :

Private Sub cmdCircle_Click()


Aksi = Lingkar 'Tandai Aksi menggambar Lingkaran
Tahap = 1 'Tahap inisialisasi titik Awal / Pusat
End Sub

Private Sub cmdDot_Click()


Aksi = Titik
Tahap = 2 'Kalau titik langsung ketahap akhir
End Sub

Private Sub cmdLine_Click()


Aksi = Garis
Tahap = 1
End Sub

Private Sub cmdRectangle_Click()


Aksi = Kotak
Tahap = 1
End Sub

Catatan : Untuk titik kita langsung ketahap pengambaran akhir, karena tidak
diperlukan titik pusat

Melakukan koding terhadap Event MouseDown untuk mendapatkan titik Awal/Pusat,


dan membuat Tahap pengambaran ke Tahap berikutnya.

Private Sub PicKanvas_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)


If Aksi = Lingkar Or _
Aksi = Persegi Or _
Aksi = Garis Then 'Untuk titik tidak perlu titik Awal / Pusat
If Tahap = 1 Then 'Jika ditandai sebagai tahap 1 (inisial titik Awal/Pusat)
Pusatx = x 'Simpan titik Awal / Pusat
Pusaty = y
Tahap = 2 'Tandai sebagai tahap Berikutnya

106
Modul Visual Basic 6
[email protected]
End If
End If
End Sub

Melakukan koding terhadap Event MouseMove untuk menggambar sementara/tidak


permanen

Private Sub PicKanvas_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)


If Aksi = Lingkar Or _
Aksi = Persegi Or _
Aksi = Garis And _
Tahap = 2 Then 'Kalau Tahap 2
PicKanvas.Refresh 'Hapus gambar sementara sebelumnya
Call Gambar(x, y) 'Panggil Procedure Gambar
End If
End Sub

Catatan : Metoda Refresh akan menghapus gambar sementara yang dibuat dengan
properti AutoRedraw = False

Melakukan koding terhadap Event MouseUp untuk membuat Gambar permanen, dan
mereset Aksi pemakai kembali ke None.

Private Sub PicKanvas_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)


If (Aksi = Lingkar Or _
Aksi = Persegi Or _
Aksi = Garis) And _
Tahap = 2 Then 'Kalau Tahap 2
PicKanvas.Refresh 'Hapus gambar sementara sebelumnya
Call Gambar(x, y) 'Panggil Procedure Gambar
End If
End Sub

Akhirnya kita buat Event Klik untuk menyimpan Gambar yang dihasilkan ke sebuah file :

Private Sub cmdSave_Click()


Dim fName As String
fName = InputBox("Masukkan nama file :", "Simpan kanvas")
If fName <> "" Then 'Kalau tidak kosong
If UCase(Left(fName, 4)) <> ".bmp" Then 'Kalau tidak ada ekstension .bmp
fName = fName + ".bmp" 'Tambahkan ekstension
End If
SavePicture PicKanvas.Image, fName 'Simpan Gambar
End If
End Sub

Kontrol Standard (bagian 4)


HScrollBar dan VScrollBar
Horizontal ScrollBar dan Vertical ScrollBar digunakan untuk memungkinkan pemakai
melakukan pemasukkan data secara analog, dengan melakukan pengeseran ataupun
penekanan tombol (kiri, kanan, atas, bawah). Anda dapat membayangkan Scrollbar
sebagai pengatur Volume pada Radio.
107
Modul Visual Basic 6
[email protected]

Properti Fungsi
Digunakan untuk menentukan apakan event Validate di aktifkan ketika kontrol
CauseValidation
akan kehilangan fokus (False, True)
DragMode Menentukan modus drag-n-drop (0 - manual, 1 - automatic)
Digunakan untuk menentukan icon yang digunakan pada operasi drag-n-drop
DragIcon
pada kontrol.
Menentukan apakah kontrol label dapat menerima event yang dibuat oleh
Enabled
pemakai, misalnya event Click, MouseDown, MouseUp, dll.
Height Digunakan untuk menentukan tinggi dari kontrol
Digunakan untuk menentukan nomor index, jika kontrol tersebut merupakan
Index
kontrol array.
Digunakan untuk menentukan besar perubahan Value ketika pemakai melakukan
LargeChange klik di antara tanda Arah dan Bar, atau ketika pemakai melakukan penekanan
tombol PgUp dan PgDn pada saat aktif di ScrollBar.
Left Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
Digunakan untuk menentukan nilai Maksimal dari kontrol ScrollBar, ketika Bar
rapat ke kanan atau ketika pemakai melakukan penekanan tombol End pada
saat aktif di ScrollBar.

Max

Digunakan untuk menentukan nilai Minimal dari kontrol ScrollBar, ketika Bar
rapat ke kiri atau ketika pemakai melakukan penekanan tombol Home pada saat
aktif di ScrollBar.

Min

Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse
MouseIcon berada diatas kontrol label tersebut, properti ini berarti bila properti MousePointer
diset menjadi (99 - Custom)
Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse
MousePointer
pointer berada diatas kontrol label tersebut.
Digunakan untuk menentukan besar perubahan Value ketika pemakai melakukan
SmallChange klik pada tanda Arah, atau ketika pemakai melakukan penekanan tombol panah
kiri dan kanan pada saat aktif di ScrollBar.
Digunakan untuk menentukan urutan tabindex, 0 adalah kontrol yang pertama
TabIndex mendapat fokus jika form dijalankan. Properti ini efektif jika setting properti
TabStop adalah True
Digunakan untuk menentukan apakah textbox dapat menerima fokus karena
TabStop
penekanan tombol TAB oleh pemakai (False, True)
Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang
Tag
berkaitan dengan kontrol label tersebut
Top Digunakan untuk menentukan jarak atas kontrol dari kontainernya.
Value Digunakan untuk mendapatkan / menentukan nilai dari ScrollBar
Visible Digunakan untuk menentukan apakah kontrol label tersebut Visible atau tidak

108
Modul Visual Basic 6
[email protected]
(False, True)
Width Digunakan untuk menentukan lebar kontrol.

Event Pada ScrollBar

Pada ScrollBar ada dua event yang perlu diperhatikan, yaitu Event Change dan Event
Scroll, dimana :

Event Change, akan dibangkitkan ketika terjadi perubahan Value pada ScrollBar, tetapi
event ini tidak dibangkitkan ketika pemakai masih melakukan pengeseran terhadap Bar,
kecuali kalau pemakai telah melepaskan tombol kiri Mouse.

Contoh :

Private Sub VScroll_Change()


ImgGambar.Top = -VScroll.Value 'Berlawanan arah
End Sub
Private Sub HScroll_Change()
ImgGambar.Left = -HScroll.Value 'Berlawanan arah
End Sub

Event Scroll, akan dibangkitkan ketika pemakai melakukan pergeseran terhadap Bar
dengan menggunakan drag pada tombol kiri mouse, jadi Event Scroll akan terjadi ketika
pemakai melakukan pergeseran dengan menekan tombol kiri mouse, dan diakhiri
dengan Event Change ketika pemakai melepas penekenan tombol mouse.

Jadi anda harus memanfaatkan kedua event tersebut untuk mendapatkan hasil yang
baik dari pemakaian ScrollBar.

Line dan Shape


Properti Fungsi
Menentukan warna latarbelakang dari suatu Shape. Properti ini efektif jika setting
Backstyle dari Shape adalah (1 - Opaque)

BackColor

Menentukan jenis latarbelakang dari suatu Shape, apakah (0 - Transparent, 1 -


BackStyle
Opaque)
Menentukan warna bingkai dari suatu Shape. Properti ini efektif jika setting
BorderStyle bukan (0 - Transparent)

BorderColor

BorderStyle Menentukan jenis garis border yang digunakan. (0 - Transparent, 1 - Solid, 2 -


Dash, 3 - Dot, 4 - Dash Dot, 5 - Dash Dot Dot, dst)

109
Modul Visual Basic 6
[email protected]

Menentukan ukuran ketebalan garis border.

BorderWidth

Menentukan jenis Drawmode yang digunakan. defaultnya adalah (13 - Copy pen)

DrawMode

Menentukan warna yang digunakan untuk menggambarkan pola isinya yang


ditentukan pada properti FillStyle.

FillColor

Menentukan jenis arsiran yang digunakan untuk isian kontrol Shape. Lihat
FillStyle
gambar pada properti FillColor.
Height Digunakan untuk menentukan tinggi dari kontrol
Digunakan untuk menentukan nomor index, jika kontrol tersebut merupakan
Index
kontrol array.
Left Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
Digunakan untuk menentukan bentuk Shape (0 - Rectangle, 1 - Square, 2 - Oval,
Shape
3 - Circle, 4 - Rounded Rectangle, 5 - Rounded Square)
Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang
Tag
berkaitan dengan kontrol label tersebut
Top Digunakan untuk menentukan jarak atas kontrol dari kontainernya.
Digunakan untuk menentukan apakah kontrol label tersebut Visible atau tidak
Visible
(False, True)
Width Digunakan untuk menentukan lebar kontrol.

Timer
Properti Fungsi
Enabled Menentukan apakah kontrol dapat efektif terhadap Event Timer.
Digunakan untuk menentukan nomor index, jika kontrol tersebut merupakan
Index
kontrol array.
Interval Menentukan nilai interval dalam mili detik (1/1000) antar pemanggilan Event

110
Modul Visual Basic 6
[email protected]
Timer.
Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang
Tag
berkaitan dengan kontrol label tersebut

Event Timer

Event Timer adalah event yang dibangkitkan oleh kontrol timer berdasarkan interval
waktu yang telah ditentukan.

Contoh :

Private Sub Timer_Timer()


Call AturJarum
End Sub

Module Pada Visual Basic


Visual Basic menyediakan module yang dapat digunakan untuk memuat
fungsi,subrutin, konstanta, variabel dan type ciptaan yang akan disediakan bagi
keseluruhan project. Untuk membuat module dalam project anda dapat menggunakan
perintah Project, Add Module.

Sesaat setelah anda menambahkan module, maka pada Jendela Project Explorer akan
nampak Module1

Untuk melakukan koding, anda dapat melakukan double klik pada Module tersebut.

111
Modul Visual Basic 6
[email protected]

Deklarasi Variabel Pada Module


Pada Module anda dapat mendeklarasikan variabel dengan awalan DIM, PRIVATE
maupun PUBLIC, dimana awalan DIM dan PRIVATE anda membentuk variabel Module
Level (hanya berlaku didalam pemakaian module bersangkutan), sedangkan awalan
PUBLIC akan menghasilkan variabel Global yang akan berfungsi bagi keseluruhan
Program.

Contoh :

Dim A as Integer 'Variabel A adalah Module Level


Private B as Integer 'Variabel B adalah Module Level
Public C as Integer 'Variabel C dapat digunakan oleh program keseluruhan

Deklarasi Fungsi dan Sub


Sub dan Function yang dideklarasikan dalam suatu Module bersifat Global bagi
keseluruhan program, kecuali kalau diawali dengan awalan PRIVATE.

Contoh :

Sub Tengah(x)
x.Move (Screen.Width - x.Width) \ 2, _
(Screen.Height - x.Height) \ 2
End Sub

Sub Tengah diatas berlaku untuk program secara keseluruhan

Latihan 1

Judul : Memanfaatkan HScrollBar dan VScrollBar untuk membuat


gambar yang dapat bergeser.

Trik : Untuk membuat gambar yang dapat bergeser anda perlu menanamkan sebuah
kontrol image, kontrol VscrollBar dan HScrollBar diatas sebuah kontrol Picture. Jadi
dalam hal ini kontrol Picture bertindak sebagai kontainer.

112
Modul Visual Basic 6
[email protected]

Kontrol Properti Value


Picture1 Name picBingkai
Image1 Name imgGambar
HScroll1 Name HScroll
VScroll1 Name VScroll

Membuat Sub StatusBingkai yang berfungsi membuat ukuran Picturebox sama dengan
ukuran Form sebelah dalam (ScaleWidth, ScaleHeight) dengan menggunakan Metoda
Move. Dan membuat kontrol imgGambar rapat kiri atas terhadap kontainernya (0,0)

Private Sub StatusBingkai()


PicBingkai.Move 0 , 0, Me.ScaleWidth , Me.ScaleHeight
ImgGambar.Move 0, 0
End Sub

Membuat Sub AturScrollBar yang berfungsi menentukan keaktifan tampilan dari VScroll
dan HScroll. Adapun syarat penampilan dari kedua kontrol tersebut adalah :

HScroll, jika ukuran lebar gambar (imgGambar.Width) > ukuran tinggi bingkai
(PicPingkai.Width)

VScroll, jika ukuran tinggi gambar (imgGambar.Height) > ukuran tinggi bingkai
(PicPingkai.Height)

Private Sub AturScrollBar()


If ImgGambar.Width > PicBingkai.ScaleWidth Then 'Jika gambar lebih lebar dari pada bingkai
HScroll.Visible = True 'aktifkan horizontal scrollbar
Else
HScroll.Visible = False
End If
If ImgGambar.Height > PicBingkai.ScaleHeight Then
VScroll.Visible = True
Else
VScroll.Visible = False
End If
End Sub

Membuat Sub StatusHScroll yang berfungsi mengatur penempatan HScroll pada


picturebox (Left dan Top) dan ukuran dari HScroll (Width), serta Min, Max,
SmallChange dan LargeChange.

113
Modul Visual Basic 6
[email protected]
Private Sub StatusHScroll()
If ImgGambar.Width > PicBingkai.ScaleWidth Then
HScroll.Left = 0
HScroll.Top = PicBingkai.ScaleHeight - HScroll.Height
If ImgGambar.Height > PicBingkai.ScaleHeight Then
HScroll.Width = PicBingkai.ScaleWidth - VScroll.Width
Else
HScroll.Width = PicBingkai.ScaleWidth
End If
HScroll.Min = 0
HScroll.Max = (ImgGambar.Width - HScroll.Width) - 1
HScroll.SmallChange = HScroll.Max \ 50
HScroll.LargeChange = HScroll.Max \ 10
End If
End Sub

Membuat Sub StatusVScroll

Private Sub StatusVScroll()


If ImgGambar.Height > PicBingkai.ScaleHeight Then
VScroll.Top = 0
VScroll.Left = PicBingkai.ScaleWidth - VScroll.Width
If ImgGambar.Width > PicBingkai.ScaleWidth Then
VScroll.Height = PicBingkai.ScaleHeight - HScroll.Height
Else
VScroll.Height = PicBingkai.ScaleHeight
End If
VScroll.Min = 0
VScroll.Max = (ImgGambar.Height - VScroll.Height) - 1
VScroll.SmallChange = VScroll.Max \ 50
VScroll.LargeChange = VScroll.Max \ 10
End If
End Sub

Melakukan Koding terhadap Event Change pada VScroll dan HScroll, yang berfungsi
mengatur Top dan Left dari imgGambar terhadap kontainernya, dimana adalah jika
pemakai melakukan geser kebawah, maka imgGambar perlu digeser keatas (
-VScroll.Value), dan jika pemakai melakukan geser kekanan, maka imgGambar perlu
digeser kekiri (-HScroll.Value)

Private Sub VScroll_Change()


ImgGambar.Top = -VScroll.Value 'Berlawanan arah
End Sub
Private Sub HScroll_Change()
ImgGambar.Left = -HScroll.Value 'Berlawanan arah
End Sub

Melakukan koding terhadap Event Form Resize

Private Sub Form_Resize()


Call StatusBingkai
Call AturScrollBar
Call StatusVScroll
Call StatusHScroll
End Sub

Untuk melakukan percobaan terhadap project ini anda perlu menentukan gambar yang
berukuran besar pada imgGambar

114
Modul Visual Basic 6
[email protected]

Latihan 2

Judul : Memanfaatkan Shape, Line, dan Timer untuk membuat Jam


Analog

Untuk membuat jam analog beberapa hal yang perlu diketahui adalah :

1. Menghitung Besar sudut 1 jam, 1 menit dan 1 detik, dimana :

1 Lingkaran Jam = 360 derajat, maka

1 jam = 30 derajat (360/12)

1 menit = 6 derajat (360/60)

1 detik = 6 derajat (360/60)

2. Mengkonversi Jam menjadi Sudut, dimana :

Jam 1 = 60 derajat

Jam 2 = 30 derajat

Jam 3 = 0 derajat

Jam 4 = - 30 derajat atau 330 derajat

Jam 5 = - 60 derajat atau 300 derajat

Rumus deret aritmatika adalah (n-1) * b + a, dimana n adalah suku, a adalah nilai awal,
b adalah beda, maka berdasarkan deret diatas :

b = -30

a = 60

Sehingga dapat dirumuskan menjadi :

(Jam - 1) * -30 + 60

Rumuskan sendiri untuk yang menit dan detik

(Menit - 1) * -6 + 84

(Detik - 1) * -6 + 84

2. Menghitung koordinat Cartesius (x,y) untuk jarum jam, menit dan detik

Untuk menghitung koordinat Cartesius, kita perlu menguraikan suatu koordinat Polar
menjadi komponen X dan Y dengan rumus :
115
Modul Visual Basic 6
[email protected]
X = R Cos sudut

Y = R Sin sudut

Tanamkan pada Form 1 Shape, 3 Line, dan 1 Timer, sehingga menjadi sebagai
berikut :

Aturlah masing-masing properti menjadi :

Kontrol Properti Value


Form1 BorderStyle 1 - Fixed Single
Name Bingkai
BackStyle 1 - Opaque
BackColor Atur sendiri
Shape1
BorderColor Atur sendiri
BorderWidth Atur sendiri
Visible False
Name JarumJam
Line1
Visible False
Name JarumMenit
Line2
Visible False
Name JarumDetik
Line3
Visible False
Name Timer
Timer1 Interval 1000 (1 detik)
Enable True

Pada General Declaration, deklarasikan variabel-variabel berikut :

Option Explicit
Dim PanjangJJam As Integer 'untuk panjang jarum jam
Dim PanjangJMenit As Integer
Dim PanjangJDetik As Integer
Dim PusatX As Integer 'titik pusat jam
Dim PusatY As Integer

Buatlah Sub sebagai berikut :

Sub HitungSkala, berfungsi membuat diameter Bingkai menjadi cocok pada form,
menghitung panjang masing-masing jarum, dan menghitung titik pusat bingkai.
116
Modul Visual Basic 6
[email protected]
Sub HitungSkala()
Bingkai.Top = 0
Bingkai.Left = 0
Bingkai.Height = Me.ScaleHeight 'Hitung diameter bingkai
Bingkai.Width = Me.ScaleWidth
PanjangJJam = (4 / 10 * Me.ScaleHeight) \ 2 'Hitung panjang jarum Jam (40% dari diameter)
PanjangJMenit = (6 / 10 * Me.ScaleHeight) \ 2 ' 60% dari diameter
PanjangJDetik = (8 / 10 * Me.ScaleHeight) \ 2 ' 80% dari diameter
PusatX = Me.ScaleWidth \ 2 'Hitung titik pusat Bingkai
PusatY = Me.ScaleHeight \ 2
End Sub

Sub AturJarumJam, berfungsi menghitung sudut jarum jam berdasarkan waktu


komputer, menghitung koordinat cartesius berdasarkan sudut, dan mengeser
JarumJam berdasarkan koordinat.

Private Sub AturJarumJam()


Dim JamSekarang As Single
Dim SudutJam As Integer
Dim x, y
JamSekarang = (Now - Int(Now)) * 24 'Ambil waktu dengan membuang bagian tanggal
SudutJam = (JamSekarang - 1) * -30 + 60 'Hitung sudut jam
x = PanjangJJam * Cos(SudutJam * 3.14 / 180) 'Hitung koordinat Cartesius
y = PanjangJJam * Sin(SudutJam * 3.14 / 180)
JarumJam.X1 = PusatX 'Atur jarum jam
JarumJam.Y1 = PusatY
JarumJam.X2 = PusatX + x
JarumJam.Y2 = PusatY - y
End Sub
Private Sub AturJarumMenit()
Dim WaktuSekarang As Single
Dim MenitSekarang As Integer
Dim SudutMenit As Integer
Dim x, y
WaktuSekarang = (Now - Int(Now)) * 24
MenitSekarang = (WaktuSekarang - Int(WaktuSekarang)) * 60
SudutMenit = (MenitSekarang - 1) * -6 + 84
x = PanjangJMenit * Cos(SudutMenit * 3.14 / 180)
y = PanjangJMenit * Sin(SudutMenit * 3.14 / 180)
JarumMenit.X1 = PusatX
JarumMenit.Y1 = PusatY
JarumMenit.X2 = PusatX + x
JarumMenit.Y2 = PusatY - y
End Sub
Private Sub AturJarumDetik()
Dim WaktuSekarang As Single
Dim DetikSekarang As Integer
Dim SudutDetik As Integer
Dim x, y
WaktuSekarang = (Now - Int(Now)) * 24 * 60
DetikSekarang = (WaktuSekarang - Int(WaktuSekarang)) * 60
SudutDetik = (DetikSekarang - 1) * -6 + 84
x = PanjangJDetik * Cos(SudutDetik * 3.14 / 180)
y = PanjangJDetik * Sin(SudutDetik * 3.14 / 180)
JarumDetik.X1 = PusatX
JarumDetik.Y1 = PusatY
JarumDetik.X2 = PusatX + x
JarumDetik.Y2 = PusatY - y
End Sub
Private Sub AturJarum()
Call AturJarumJam 'Atur Jarum Jam
Call AturJarumMenit 'Atur Jarum Menit

117
Modul Visual Basic 6
[email protected]
Call AturJarumDetik 'Atur Jarun Detik
End Sub

Melakukan koding pada Event Load dan Form Resize

Private Sub Form_Load()


Me.Height = 3000 'Atur tinggi Form
Me.Width = 3000 'Lebar
Call HitungSkala 'Hitung Skala
Me.Visible = True
Bingkai.Visible = True 'Buat jadi Visible
Call AturJarum 'Atur jarum
JarumJam.Visible = True 'Buat jadi Visible
JarumMenit.Visible = True
JarumDetik.Visible = True
End Sub
Private Sub Form_Resize()
Call HitungSkala 'Hitung skala ketika terjadi perubahan ukuran Form
End Sub

Melakukan koding pada Event Timer

Private Sub Timer_Timer()


Call AturJarum 'Atur jarum jam setiap detik
End Sub

Tips : Membuat Form Berbentuk Bulat

Dengan menggunakan fungsi API, anda dapat membuat form berbentuk Bulat sesuai
dengan ukuran Jam Analog Diatas, adapun perubahan yang perlu dilakukan adalah :

Atur properti BorderStyle menjadi 0 - None

Tambahkan sebuah module kedalam project anda dan lakukan koding sebagai berikut :

Public Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2
As Long, ByVal Y2 As Long) As Long
Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal
bRedraw As Boolean) As Long

Public XP As Single
Public yp As Single

Lakukan perubahan koding pada event Form Load dan Form Resize

Private Sub Form_Load()


XP = Screen.TwipsPerPixelX 'Bagian ini yang ditambahkan
yp = Screen.TwipsPerPixelY
Me.Height = 3000 'Atur tinggi Form
Me.Width = 3000 'Lebar
Call HitungSkala 'Hitung Skala
Me.Visible = True
Bingkai.Visible = True 'Buat jadi Visible
Call AturJarum 'Atur jarum
JarumJam.Visible = True 'Buat jadi Visible
JarumMenit.Visible = True
JarumDetik.Visible = True
End Sub
Private Sub Form_Resize()

118
Modul Visual Basic 6
[email protected]
Dim mFormRegion As Long
Call HitungSkala
mFormRegion = CreateEllipticRgn(Bingkai.Left, Bingkai.Top, Bingkai.Width / XP, Bingkai.Height / yp)
SetWindowRgn Me.hwnd, mFormRegion, False
End Sub

Latihan 3

Judul : Tantangan Pemrograman

1. Buka kembali Latihan 1, dan tambahkan fasilitas Zoom (+) kalau klik kiri, Zoom (-)
kalau klik kanan pada Gambar. Adapun persentase pembesaran maupun pengecilan
adalah 25%

2. Buka kembali Latihan 2, dan tambahkan fasilitas memindahkan jam Analog setelah
form berbentuk Lingkaran, karena BorderStyle 0-None tidak dapat dipindah-pindahkan.

3. Buatlah program yang dapat mencatat Absensi Karyawan ke sebuah text file dengan
format, pada Form tampil Jam Digital dan Analog, sebuah textbox untuk pemasukkan
No Induk Pegawai :

DDMMYYYYHHMMXXXXXXK

Dimana :

DDMMYYYY (Tanggal)
HHMM (Jam dan Menit)
XXXXXX (No Induk Pegawai)
K (Kode 1 = Masuk 2 = Keluar)

Kontrol Standard (bagian 5)


DriveListBox
DriveListBox dapat digunakan untuk menampilkan drive yang terdapat pada sistem
komputer

119
Modul Visual Basic 6
[email protected]

Properti Fungsi
BackColor Digunakan untuk menentukan warna latarbelakang kontrol
Digunakan untuk menentukan apakan event Validate di aktifkan ketika kontrol
CauseValidation
akan kehilangan fokus (False, True)
DragMode Menentukan modus drag-n-drop (0 - manual, 1 - automatic)
Digunakan untuk menentukan icon yang digunakan pada operasi drag-n-drop
DragIcon
pada kontrol label
Menentukan apakah kontrol label dapat menerima event yang dibuat oleh
Enabled
pemakai, misalnya event Click, MouseDown, MouseUp, dll.
Digunakan untuk menentukan Font, Size, dan Style huruf yang digunakan pada
Font
kontrol DriveListBox
Digunakan untuk menentukan warna tulisan yang digunakan pada kontrol
ForeColor
DriveListBox
Height Digunakan untuk menentukan tinggi dari kontrol
Digunakan untuk menentukan nomor index, jika kontrol tersebut merupakan
Index
kontrol array.
Left Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse
MouseIcon berada diatas kontrol label tersebut, properti ini berarti bila properti MousePointer
diset menjadi (99 - Custom)
Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse
MousePointer
pointer berada diatas kontrol label tersebut.
Digunakan untuk menentukan urutan tabindex, 0 adalah kontrol yang pertama
TabIndex mendapat fokus jika form dijalankan. Properti ini efektif jika setting properti
TabStop adalah True
Digunakan untuk menentukan apakah textbox dapat menerima fokus karena
TabStop
penekanan tombol TAB oleh pemakai (False, True)
Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang
Tag
berkaitan dengan kontrol label tersebut
Top Digunakan untuk menentukan jarak atas kontrol dari kontainernya.
Value Digunakan untuk mendapatkan / menentukan nilai dari ScrollBar
Digunakan untuk menentukan apakah kontrol label tersebut Visible atau tidak
Visible
(False, True)
Width Digunakan untuk menentukan lebar kontrol.

Mendapatkan Drive yang aktif di DriveListBox


120
Modul Visual Basic 6
[email protected]
Untuk mendapatkan drive yang aktif di DriveListBox, anda dapat menggunakan properti
Drive.

DirListBox
DirListBox dapat digunakan untuk menampilkan folder-folder yang terdapat didrive yang
aktif.

Properti Fungsi
Appearance Digunakan untuk menentukan penampilan dari kontrol (0 - Flat, 1 - 3D)
BackColor Digunakan untuk menentukan warna latarbelakang kontrol
Digunakan untuk menentukan apakan event Validate di aktifkan ketika kontrol
CauseValidation
akan kehilangan fokus (False, True)
DragMode Menentukan modus drag-n-drop (0 - manual, 1 - automatic)
Digunakan untuk menentukan icon yang digunakan pada operasi drag-n-drop
DragIcon
pada kontrol label
Menentukan apakah kontrol label dapat menerima event yang dibuat oleh
Enabled
pemakai, misalnya event Click, MouseDown, MouseUp, dll.
Digunakan untuk menentukan Font, Size, dan Style huruf yang digunakan pada
Font
kontrol.
ForeColor Digunakan untuk menentukan warna tulisan yang digunakan pada kontrol.
Height Digunakan untuk menentukan tinggi dari kontrol
Digunakan untuk menentukan nomor index, jika kontrol tersebut merupakan
Index
kontrol array.
Left Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse
MouseIcon berada diatas kontrol label tersebut, properti ini berarti bila properti MousePointer
diset menjadi (99 - Custom)
Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse
MousePointer
pointer berada diatas kontrol label tersebut.
Digunakan untuk menentukan urutan tabindex, 0 adalah kontrol yang pertama
TabIndex mendapat fokus jika form dijalankan. Properti ini efektif jika setting properti
TabStop adalah True
Digunakan untuk menentukan apakah textbox dapat menerima fokus karena
TabStop
penekanan tombol TAB oleh pemakai (False, True)
Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang
Tag
berkaitan dengan kontrol label tersebut

121
Modul Visual Basic 6
[email protected]
Top Digunakan untuk menentukan jarak atas kontrol dari kontainernya.
Value Digunakan untuk mendapatkan / menentukan nilai dari ScrollBar
Digunakan untuk menentukan apakah kontrol label tersebut Visible atau tidak
Visible
(False, True)
Width Digunakan untuk menentukan lebar kontrol.

Mendapatkan Path yang aktif pada DirListBox

Untuk mendapatkan Path yang sedang aktif pada DirListBox, anda dapat menggunakan
properti Path.

FileListBox
DirListBox dapat digunakan untuk menampilkan file-file yang terdapat pada folder yang
sedang aktif.

Properti Fungsi
Appearance Digunakan untuk menentukan penampilan dari kontrol (0 - Flat, 1 - 3D)
Digunakan untuk menentukan apakah FileListBox dapat menampilkan file dengan
Archive
atribut Archive atau tidak.
BackColor Digunakan untuk menentukan warna latarbelakang kontrol
Digunakan untuk menentukan apakan event Validate di aktifkan ketika kontrol
CauseValidation
akan kehilangan fokus (False, True)
DragMode Menentukan modus drag-n-drop (0 - manual, 1 - automatic)
Digunakan untuk menentukan icon yang digunakan pada operasi drag-n-drop
DragIcon
pada kontrol label
Menentukan apakah kontrol label dapat menerima event yang dibuat oleh
Enabled
pemakai, misalnya event Click, MouseDown, MouseUp, dll.
Digunakan untuk menentukan Font, Size, dan Style huruf yang digunakan pada
Font
kontroi.
ForeColor Digunakan untuk menentukan warna tulisan yang digunakan pada kontrol.
Hidden Digunakan untuk menentukan apakah FileListBox dapat menampilkan file dengan

122
Modul Visual Basic 6
[email protected]
atribut Hidden atau tidak.
Height Digunakan untuk menentukan tinggi dari kontrol
Digunakan untuk menentukan nomor index, jika kontrol tersebut merupakan
Index
kontrol array.
Left Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
Digunakan untuk menentukan apakah FileListBox dapat menampilkan file dengan
Normal
atribut Normal atau tidak.
Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse
MouseIcon berada diatas kontrol label tersebut, properti ini berarti bila properti MousePointer
diset menjadi (99 - Custom)
Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse
MousePointer
pointer berada diatas kontrol label tersebut.
Digunakan untuk menentukan apakah item dalam listbox dapat dipilih lebih dari
satu atau tidak (0 - None, 1 - Simple, 2 - Extended) Perbedaan antara 1 - Simple
MultiSelect
dengan 2 - Extended, adalah pada Simple pemilihan beberapa item sekaligus
tidak dapat menggunakan bantuan Shift.
Digunakan untuk menentukan pola wildcard yang digunakan untuk membatasi file
Pattern
yang akan ditampilkan dalam kontrol (*.* semua file, *.bmp, ?A*.jpg)
Digunakan untuk menentukan apakah FileListBox dapat menampilkan file dengan
ReadOnly
atribut ReadOnly atau tidak.
Digunakan untuk menentukan apakah FileListBox dapat menampilkan file dengan
System
atribut System atau tidak.
Digunakan untuk menentukan urutan tabindex, 0 adalah kontrol yang pertama
TabIndex mendapat fokus jika form dijalankan. Properti ini efektif jika setting properti
TabStop adalah True
Digunakan untuk menentukan apakah textbox dapat menerima fokus karena
TabStop
penekanan tombol TAB oleh pemakai (False, True)
Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang
Tag
berkaitan dengan kontrol label tersebut
Top Digunakan untuk menentukan jarak atas kontrol dari kontainernya.
Value Digunakan untuk mendapatkan / menentukan nilai dari ScrollBar
Digunakan untuk menentukan apakah kontrol label tersebut Visible atau tidak
Visible
(False, True)
Width Digunakan untuk menentukan lebar kontrol.

Membatasi file pada FileListBox

Untuk membatasi file berdasarkan nama file, anda dapat menggunakan properti
Pattern, misalnya kalau file yang ingin ditampilkan hanya berupa file bitmap, maka kita
dapat menggunakan (*.bmp), kalau file yang ingin ditampilkan berupa file grafik kita
dapat menggunakan (*.bmp;*.jpg;*.gif;*.wmf;*.ico)

Untuk membatasi file berdasarkan attributnya, anda dapat menggunakan properti


Archive, Hidden, Normal, ReadOnly dan System, dengan menentukan masing-masing
menjadi True atau False.

Contoh :

MyFile.System = False

Menghubungkan DriveListBox, DirListBox, dan


FileListBox
123
Modul Visual Basic 6
[email protected]
Misalnya kita memiliki tiga buah kontrol yaitu DriveListBox, DirListBox, dan FileListBox
dimana perubahan pada DriveListBox akan menyebabkan preubahan tampilan pada
DirListBox, dan FileListBox.

Maka Koding yang dapat dilakukan adalah sebagai berikut :

Private Sub MyDrive_Change()


MyDir.Path = MyDrive.Drive
End Sub
Private Sub MyDir_Change()
MyFile.Path = MyDir.Path
End Sub

Mencetak Isi Form ke Printer


Untuk mencetak isi Form ke Printer anda dapat menggunakan Metoda PrintForm pada
object Form.

Contoh :

Private Sub Command1_Click()


Me.PrintForm
End Sub

Memahami Objek App


Objek App disediakan oleh Visual Basic library dan mewakili aplikasi yang sedang
dijalankan. Objek App memiliki banyak properti dan metoda, yang tidak akan dibahas
secara keseluruhan disini.

Mendapatkan Path dimana aplikasi berada

Salah satu masalah dalam pengaktifan file adalah menentukan path dimana file
tersebut berada, sebagaimana kita ketahui, pada aplikasi Windows umumnya di
instalasi pada folder Program Files, tetapi ketika kita mengembangkan program
tersebut, tentu saja kita lakukan pada folder sendiri, sehingga kadang-kadang menjadi
masalah ketika program tersebut didistribusikan. Untuk mendapatkan Path dimana
aplikasi berada kita dapat menggunakan properti Path pada objek App

124
Modul Visual Basic 6
[email protected]
Contoh :

cFolder = App.Path
Open cFolder & "\Pegawai.Dat" For Random As #1 Len = Len(DatPegawai)

Dengan potongan program diatas, kita senantiasa yakin bahwa file Pegawai.Dat akan
berada di Path yang sama dengan aplikasi.

Mendapatkan nama file Executable

Anda dapat menggunakan properti EXEname untuk mendapatkan nama file Executable
anda.

Contoh :

Private Sub Form_Load()


If UCase$(App.ExeName) <> "INDOPROG" Then
MsgBox "Anda tidak berhak mengganti nama program tanpa izin programmer"
End
End If
End Sub

Memeriksa apakah aplikasi telah dijalankan

Kadang-kadang aplikasi kita hanya boleh dijalankan sekali pada komputer yang sama.
Untuk memeriksa apakah instance yang sama dari aplikasi telah berjalan pada sistem,
anda dapat menggunakan properti PrevInstance.

Contoh :

Private Sub Form_Load()


If App.PrevInstance Then
MsgBox "Aplikasi yang sama telah aktif"
End
End If
End Sub

Tidak menampilkan aplikasi pada task list ketika sedang berjalan

Anda dapat menggunakan properti TaskVisible untuk menentukan apakah aplikasi


ditampikan di Task List ketika dijalankan. Jendela Task List akan dimunculkan ketika
anda menekan Ctrl + Alt + Del.

Contoh :

Sub Main()
App.TaskVisible = False
End Sub

Sedangkan properti Title dapat digunakan untuk menentukan judul aplikasi pada Task
List.

Contoh :

Sub Main()

125
Modul Visual Basic 6
[email protected]
App.Title = "Program Kwitansi Ver 1.0"
End Sub

atau anda dapat juga menentukannya pada saat design, pada menu Project Properties

Sedangkan properti seperti Major, Minor, dan Revision mengembalikan informasi


tentang versi dari aplikasi yang sedang dijalankan. Comments, CompanyName,
FileDescription, LegalCopyright, LegalTrademarks, dan ProductName akan berguna
ketika anda membuat Splash Screen ataupun dialog box About

Memahami Objek Screen


Pada contoh maupun latihan modul-modul sebelumnya kita banyak menggunakan
Objek screen, terutama untuk mendapatkan Tinggi (Height) dan Lebar (Width) dari
Layar komputer untuk menempatkan suatu Form ke posisi di Tengah layar. Contoh :

Contoh :

Sub Tengah(x)
x.Move (Screen.Width - x.Width) \ 2, _
(Screen.Height - x.Height) \ 2
End Sub

Properti Height dan Width mengembalikan ukuran Tinggi dan Lebar layar dalam ukuran
Twips, tetapi untuk fungsi-fungsi API kita membutuhkan ukuran dalam pixel. Untuk
mendapatkan jumlah Twips per pixel kita dapat menggunakan properti TwipsPerPixelY
dan TwipsPerPixelX.

Contoh :

'Mendapatkan ukuran tinggi dan lebar layar dalam Pixel


scrWidth = Screen.Width / Screen.TwipsPerPixelX
scrHeight = Screen.Height / Screen.TwipsPerPixelY

Dengan menggunakan objek Screen kita juga dapat memperoleh nama-nama font yang
tersedia dilayar dengan menggunakan properti Font dan FontCount.
126
Modul Visual Basic 6
[email protected]
Contoh :

' Menggambil semua font pada objek Screen dan memasukkannya ke kontrol ListBox.
Dim i As Integer
For i = 0 To Screen.FontCount - 1
lstFonts.AddItem Screen.Fonts(i)
Next

Anda dapat juga mengubah mouse pointer dengan menggunakan properti


MousePointer.

Contoh :

Screen.MousePointer = vbHourglass

Catatan : Efek mouse pointer hanya berlaku pada aplikasi anda.

Latihan 1

Judul : Membuat Picture Viewer

Tanamkan pada form anda kontrol-kontrol berikut : DriveListBox, DirListBox,


FileListbox, Line, dan Image

Kita perlu mempersiapkan beberapa variabel Form Level yang dapat digunakan oleh
semua Sub yang ada, adapun variabel tersebut adalah :

Dim LebarTempatGambar As Integer 'Untuk menyimpan lebar tempat Gambar yang tersedia
Dim TinggiTempatGambar As Integer 'Tinggi Gambar
Dim PosisiKiriGambar As Integer 'Posisi kiri tempat Gambar
Dim PosisiAtasGambar As Integer 'Posisi atas tempat Gambar

Selanjutnya kita buat sebuah Sub untuk menentukan posisi dan ukuran masing-masing
kontrol diatas form ketika ukuran Form berubah :

Private Sub HitungPosisi()


MyDrive.Top = 0 'Kontrol Drive Rapat

127
Modul Visual Basic 6
[email protected]
MyDrive.Left = 0 'Kiri atas Form
MyDrive.Width = 2500
MyDir.Top = MyDrive.Height 'Kontrol Dir berada dibawah
MyDir.Left = 0 'kontrol Drive dan rapat kiri
MyDir.Width = 2500
MyDir.Height = Me.ScaleHeight \ 3 'Tingginya 1/3 tinggi form
MyFile.Top = MyDir.Top + MyDir.Height 'Kontrol File berada dibawah kontrol Dir
MyFile.Left = 0
MyFile.Width = 2500
MyFile.Height = Me.ScaleHeight - MyDrive.Height - MyDir.Height 'Tingginya adalah tinggi sisa setelah
Drive dan Dir
Pemisah.Y1 = 0 'Garis Pemisah Antara Drive, Dir, File dengan Gambar
Pemisah.Y2 = Me.ScaleHeight
Pemisah.X1 = MyDrive.Width + 1 'Berada disamping kanan kontrol Drive
Pemisah.X2 = MyDrive.Width + 1
PosisiAtasGambar = 0 'Hitung Tempat sisa untuk Gambar
PosisiKiriGambar = Pemisah.X1 + 50
TinggiTempatGambar = Me.ScaleHeight
LebarTempatGambar = Me.ScaleWidth - PosisiKiriGambar
End Sub

Kita juga perlu membuat sebuah Sub yang berfungsi membuat tampilan Gambar
berada ditengah kalau ukurannya lebih kecil dari tempat gambar yang tersedia.

Private Sub BuatGambarKeTengah()


If Gambar.Width < LebarTempatGambar Then 'Jika lebih sempit
Gambar.Left = PosisiKiriGambar + (LebarTempatGambar - Gambar.Width) \ 2
Else
Gambar.Left = PosisiKiriGambar 'Rapat kiri
End If
If Gambar.Height < TinggiTempatGambar Then
Gambar.Top = PosisiAtasGambar + (TinggiTempatGambar - Gambar.Height) \ 2
Else
Gambar.Top = PosisiAtasGambar
End If
End Sub

Selanjutnya kita lakukan koding pada Event Load untuk membatasi jenis file yang
ditampilkan pada FileListBox:

Private Sub Form_Load()


'Batasi hanya file Grafik
MyFile.Pattern = "*.bmp;*.gif;*.jpg;*.wmf;*.ico"
End Sub

Lakukan koding untuk Event Resize pada Form untuk memposisikan ulang semua
kontrol kalau terjadi perubahaan ukuran Form :

Private Sub Form_Resize()


Call HitungPosisi 'Hitung ulang posisi dan ukuran
Call BuatGambarKeTengah 'Buat grafik ke tengah kalau lebih kecil dari tempat gambar
End Sub

Lakukan koding pada Event DriveListBox, DirListBox, FileListBox

Private Sub MyDrive_Change()


MyDir.Path = MyDrive.Drive
End Sub
Private Sub MyDir_Change()
MyFile.Path = MyDir.Path

128
Modul Visual Basic 6
[email protected]
End Sub
Private Sub MyFile_Click()
Dim fName As String
If Right(MyFile.Path, 1) = "\" Then 'Kalau sudah ada backslash
fName = MyFile.Path & MyFile.FileName
Else
fName = MyFile.Path & "\" & MyFile.FileName 'Tambahkan \
End If
Gambar.Visible = False 'Sembunyikan Gambar
Gambar.Picture = LoadPicture(fName) 'GantiGambar
Call BuatGambarKeTengah 'Buat ketengah kalau lebih kecil dari tempat gambar
Gambar.Visible = True 'Tampilkan
End Sub

Latihan 2

Judul : Membuat Splash Screen

Aktifkan kembali project Latihan 1

1. Ganti name dari Form1 menjadi frmViewer

2. Pada menu Project, pilih Add Form, kemudian pilih Splash Screen.

Kemudian pada menu Project, pilih Project Properties, dan pilih tab Make

Aturlah properti berikut :

Properti Value
Title Penampil Gambar
Icon frmSplash
Comments Peringatan : Hak cipta di lindungi Undang-undang
Company Name [email protected]

129
Modul Visual Basic 6
[email protected]
Legal Copyright Hak Cipta dan Distribusi oleh :
ProductName Just4U

Dan lakukan koding berikut :

Private Sub Form_Load()


lblLicenseTo.Caption = "Izin pakai untuk Indoprog-vb"
lblPlatform.Caption = "Windows 95/NT"
lblVersion.Caption = "Versi" & App.Major & "." & App.Minor & "." & App.Revision
lblCompanyProduct.Caption = App.Title
lblProductName.Caption = App.ProductName
lblCopyright.Caption = App.LegalCopyright
lblCompany.Caption = App.CompanyName
lblWarning.Caption = App.Comments
End Sub

4. Selanjutnya tambahkan sebuah modul, dengan menu Project AddModule, dan


lakukan koding berikut :

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


Sub Main()
frmSplash.Show 'Tampilkan Splash Screen
frmSplash.Refresh 'Pastikan Splash Screen ditampilkan sempurna
Sleep (1000) 'Berhenti 1 detik
frmViewer.Show 'Tampilkan frmViewer
Unload frmSplash 'Unload frmSplash
End Sub

Pada menu Project, Project Properties, tentukan StartUp Object menjadi SubMain

Latihan 3

Judul : Tantangan pemrograman

130
Modul Visual Basic 6
[email protected]
Aktifkan kembali Latihan Sebelumnya, dan :

• Aplikasi tidak bisa dijalankan lebih dari 1 kali


• Lengkapi kemampuan Scroll kalau ukuran gambar lebih besar dari tempat yang
disediakan.
• Lengkapi dengan kemampuan Zoom kalau pemakai Klik kiri (+) dan Klik kanan
(-)
• Lengkapi fasilitas cetak gambar ke Printer.

MDI Form, Menu dan Objek Printer


Mengenal Multiple Document Interface
Pada Visual Basic, anda dapat mengembangkan aplikasi dengan interface sebagai
berikut :

• SDI (Single Document Interface)


• MDI (Multiple Document Interface)

Pada aplikasi SDI, setiap form merupakan form-form yang berdiri sendiri, Aplikasi SDI
pada windows terdapat pada aplikasi seperti Notepad, WordPad dan Paint.

Sedangkan aplikasi seperti Microsoft Word menggunakan MDI, yaitu terdiri dari suatu
MDIForm, dan didalamnya merupakan form-form anak (MDIchild).

Ada beberapa hal yang harus diperhatikan dalam penggunaan MDIForm adalah :

1. Didalam satu project hanya dapat terdiri dari satu MDIForm


2. Anda tidak dapat menempatkan kontrol-kontrol secara langsung pada MDIForm,
kecuali kontrol yang memiliki properti Alignment, atau menempatkannya diatas
kontainer seperti Picturebox.
3. Anda tidak dapat menggunakan metode pengambaran (Print, Line, Circle, dan
PSet) seperti pada form umumnya.

Membuat suatu Aplikasi MDI pada Visual Basic

1. Membuat suatu MDI form


Dari menu Insert, Pilih Add MDI Form. (Suatu aplikasi hanya dapat terdiri dari
satu MDI form)

2. Membuat suatu Form menjadi MDI Child


Dari properti Form tersebut, ubah nilai properti MDI Child-nya menjadi True.

131
Modul Visual Basic 6
[email protected]
2. Menentukan StartUp Objek
Pada Menu Tools, pilih Command Options, pilih Tab Project, Tentukan StartUp
Object ke MDI form yang telah ditambahkan.

Karakteristik dari MDI Form

• Semua child form tidak dapat dipindahkan keluar dari MDI Form.
• Ketika suatu child form diminimize, akan menjadi icon dibawah MDI Form.
• Anda dapat menentukan apakah child form secara otomatis ditampilkan atau
tidak dengan menggunakan properti AutoShowChildren pada MDIForm.
• Jika pada child form ada menu, maka menu akan ditampilkan pada MDIform
menu.

Pada MDIform anda tidak dapat menempatkan kontrol-kontrol visible yang tidak
mendukung alignment, kecuali kalau anda menempatkannya kedalam suatu kontainer
seperti Picturebox, dan Toolbar. Sedangkan kontrol non-visible seperti Timer dan
CommonDialog box dapat ditempatkan diatas MDIForm.

Mendapatkan MDI Child yang sedang aktif.

Untuk mendapatkan form-form yang sedang aktif didalam suatu MDIform, anda dapat
menggunakan properti ActiveForm, contoh :

Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)


If Not Me.ActiveForm Is Nothing Then
MsgBox "Masih ada Form yang aktif"
Cancel = True
End If
End Sub

Mengatur MDI Child dalam jendela MDI form

Anda dapat menggunakan metoda Arrange untuk mengatur penyusunan form-form


yang sedang aktif didalam suatu MDI form. Metoda Arrange ini diikuti oleh suatu
parameter yang menentukan jenis penyusunan yang akan dilakukan, contoh :

Private Sub mnuTileHorizontally_Click()


Arrange vbTileHorizontal
End Sub

Private Sub mnuTileVertically_Click()


Arrange vbTileVertical
End Sub

Private Sub mnuCascade_Click()


Arrange vbCascade
End Sub

Private Sub mnuArrangeIcons_Click()


Arrange vbArrangeIcons

132
Modul Visual Basic 6
[email protected]
End Sub

Membuat Menu Pada Visual Basic


Pembuatan menu pada Visual Basic dapat dilakukan dengan bantuan Menu Editor
yang terdapat pada Menu Tools.

Pada dasarnya setiap item menu memiliki Caption dan sebuah Nama. Anda dapat
membentuk Kunci Akses dengan menggunakan tanda & (ampersand) pada Caption
dari menu tersebut. Untuk membuat menu anda cukup mengetikan Caption dan Name,
selanjutnya klik pada Next, dan ketikkan menu yang berikutnya, sampai selesai.
Selanjutnya adalah menbuat Sub Menu dengan melakukan klik pada panah kanan dan
sebaliknya. Anda dapat membuat sampai 5 Sub Menu (6 kalau termasuk Menu Utama).

Pada contoh diatas akan menghasilkan menu sebagai berikut :

Membuat Garis Pemisah antar Menu

Anda dapat menggunakan tanda - (karakter hypen) untuk membuat garis pemisah antar
menu pada Caption.

133
Modul Visual Basic 6
[email protected]

Sehingga akan menghasilkan menu sebagai berikut :

Melakukan Koding terhadap Menu

Untuk melakukan koding terhadap item menu, anda dapat membuka menu pada saat
design dan akan menghasilkan Event Click untuk item menu tersebut, contoh :

Private Sub mnuDataDepartemen_Click()


frmDepartemen.Show
End Sub

Membuat Menu yang memiliki tanda Check

Anda dapat membuat menu yang memiliki tanda Check dengan memanfaatkan option
Checked pada Menu Editor.

134
Modul Visual Basic 6
[email protected]

Sehingga akan menghasilkan menu sebagai berikut :

Anda dapat mengatur keaktifan tanda Check dari item menu tersebut dengan koding
sebagai berikut :

Private Sub mnuTampilWaktu_Click()


mnuTampilWaktu.Checked = Not mnuTampilWaktu.Checked
If mnuTampilWaktu.Checked Then
frmWaktu.Show
Else
Unload frmWaktu
End If
End Sub

Anda dapat memanfaatkan option Visible untuk menyembunyikan menu ataupun


menampilkan suatu item menu berdasarkan kondisi tertentu, dan option Enabled untuk
membuat suatu menu dapat dipilih atau tidak.

135
Modul Visual Basic 6
[email protected]
Membuat Menu Pop Up

Pada Visual Basic, anda dapat membuat menu pop up dengan memanfaatkan menu
Editor untuk mendefinisikan nama kelompok menu Pop Up beserta Sub Menunya, dan
menonaktifkan option Visible dari kelompok menu tersebut.

Kemudian lakukan koding pada Event MouseDown pada MDIform

Private Sub MDIForm_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)


If Button And vbRightButton Then
PopupMenu mnuAtur
End If
End Sub

Sehingga kalau dilakukan klik kanan pada form akan menanpilkan suatu Pop Up menu
yang berupa Sub Menu dari mnuAtur.

Memahami Objek Printer

136
Modul Visual Basic 6
[email protected]
Untuk memcetak hasil aplikasi anda ke printer, anda dapat mengunakan objek Printer
yang disediakan oleh Visual Basic. Pada objek printer tersedia berbagai metoda
pencetakkan text dan pengambaran grafik (Line, Circle, Pset, dll) seperti yang tersedia
pada form maupun kontrol Picturebox.

Objek printer juga mendukung properti ScaleWidth, ScaleHeight, ScaleTop, dan


ScaleLeft. Anda dapat memeriksa kembali fungsi properti-properti ini pada control
Picture.

Mencetak Data ke Objek Printer

Anda dapat menggunakan metoda print untuk mengirim tulisan yang akan dicetak ke
objek printer. Anda dapat juga menggunakan metoda Newpage untuk membuat printer
mencetak tulisan berikutnya ke halaman baru. Metoda EndDoc untuk memulai
pencetakkan yang sebenarnya, sedangkan KillDoc untuk membatalkan pencetakkan.
Anda juga dapat menggunakan properti Page untuk mendapatkan nomor halaman.

Contoh :

Printer.Print "Indoprog-vb, forum diskusi dan belajar bersama Visual Basic"


Printer.NewPage
Printer.Print "Ini akan dicetak pada halaman kedua"
Printer.EndDoc

Untuk menentukan jumlah rangkap pencetakkan dapat menggunakan properti Copies.

Contoh :

Printer.Copies = 2
Printer.Print "Indoprog-vb, forum diskusi dan belajar bersama Visual Basic"
Printer.NewPage
Printer.Print "Ini akan dicetak pada halaman kedua"
Printer.EndDoc

Anda dapat juga menggunakan metode pengambaran grafik seperti Line, Circle, PSet,
dan PaintPicture seperti yang terdapat pada Form dan PictureBox.

Menentukan ukuran kertas

Properti PaperSize dapat digunakan untuk menentukan ukuran kertas, misalnya


vbPRPSLetter untuk 8 1/2 x 11 (Letter). Untuk konstanta jenis ukuran kertas dapat
anda lihat dengan Object Browser pada PrinterObjectConstants.

Contoh :

Printer.PaperSize = vbPRPSLetter

137
Modul Visual Basic 6
[email protected]

Menentukan posisi pencetakkan

Anda dapat mengatur/mendapatkan posisi pencetakkan dengan menggunakan properti


CurrentX dan CurrentY.

Contoh :
Printer.CurrentX = 0.5*1440 '1/2 inch
Printer.CurrentY = 1*1440 '1 inch
Printer.Print "Hello Indoprog-vb"

Catatan : Ukuran dinyatakan dalam Twips, dimana 1 inch = 1440 Twips

Menentukan font pencetakkan

Anda dapat mengatur font pencetakan dengan menggunakan objek font. Pada objek
font anda dapat mengatur setting seperti :

Properti Keterangan
Bold Mengaktifkan cetak tebal (True, False)
Menentukan nama font yang digunakan, misalnya Verdana, Times New Roman, Arial,
Name
Courier New, dll
Italic Mengaktifkan cetak miring (True, False)
Size Menentukan ukuran font
StrikeThrought Mengaktifkan cetak coret (True, False)
Underline Mengaktifkan cetak garis bawah (True, False)
Contoh :
Printer.Font.Name = "Verdana"
Printer.Font.Size = 14
Printer.Font.Bold = True
Printer.Print "Hello Indoprog-vb"

Menentukan orientasi pencetakkan

Anda dapat menggunakan properti Orientation untuk menentukan orientasi


pencetakkan Portrait atau Landscape (1-vbPRORPortrait, 2-vbPRORLandscape).

Contoh :

Printer.Orientation = vbPRORLandscape

Mendapatkan informasi printer yang terinstalasi pada sistem

Untuk mendapatkan jumlah printer yang terinstalasi pada sistem, anda dapat
menggunakan properti Count, sedangkan nama printer dapat diperoleh dengan
DeviceName, dan DriverName untuk mendapatkan nama Driver. Berikut ini adalah
contoh mengisi nama Device dan Driver dari printer yang terinstalasi pada sistem pada
suatu ComboBox.

Contoh :

138
Modul Visual Basic 6
[email protected]
For i = 0 To Printers.Count _ 1
cboPrinters.AddItem Printers(i).DeviceName & " [" & _
Printers(i).DriverName & "]"
Next

Anda dapat juga mendapatkan informasi dengan properti Port (misalnya, LPT1:),
memeriksa apakah printer tertentu dapat melakukan pencetakkan berwarna denga
properti ColorMode (1-vbPRCMMonochrome or 2-vbPRCMColor).

Menentukan Printer yang akan digunakan

Jika anda tidak menentukan printer yang akan digunakan, maka printer yang akan
digunakan adalah printer default pada sistem anda.

Untuk mencetak dengan menggunakan printer yang tertentu anda dapat melakukan
setting printer ke printer yang bersesuaian. Contoh berikut akan menlakukan setting
printer ke nomor printer tertentu berdasarkan pilihan pemakai dari ComboBox.

Contoh :

Private Sub cmdMakeCurrent_Click()


Set Printer = Printers(cboPrinters.ListIndex)
End Sub

Latihan 1

Judul : Membuat MDIform dan Menu

1. Aktifkan kembali Latihan Modul 4

2. Tambahkan MDIForm pada project tersebut, dengan menu Project, kemudian pilih
Add MDIform, kemudian aturlah properti sebagai berikut :

Kontrol Properti Value


Name frmMain
MDIForm1
WindowState vbMaximize

3. Jadikan form-form lain yang berada pada project tersebut menjadi MDIChild, dengan
membuat properti MDIChild pada masing-masing form menjadi True.

4. Kemudian tambahkan menu berikut pada MDIForm anda, dengan menu Tools, Menu
Editor, dan ketikan data berikut.

Data mnuData
- Peserta mnuDataPeserta
- Negara mnuDataNegara
- Propinsi mnuDataPropinsi
- Garis pemisah mnuPemisah1
- Ujian mnuDataUjian
Laporan mnuLaporan
139
Modul Visual Basic 6
[email protected]
- Daftar Peserta mnuLaporanDaftarPeserta
- Peserta Ujian dan Nilai mnuLaporanPesertaUjian
Cetak mnuCetak
- Cetak Sertifikat mnuCetakSertifikat
- Cetak Label Amplop mnuCetakLabelAmplop
Selesai mnuSelesai
- Ya mnuYa
- Tidak mnuTidak

Atur hirarki yang bersesuaian dengan tampilan diatas.

6. Kemudian Lakukan koding untuk menampilkan Form berdasarkan masing-masing


pilihan pada menu, Contoh :

Private Sub mnuDataPeserta_Click()


frmPeserta.Show
End Sub
Private Sub mnuDataNegara_Click()
frmNegara.Show
End Sub
Private Sub mnuDataPropinsi_Click()
frmPropinsi.Show
End Sub
Private Sub mnuYa_Click()
Unload Me
End Sub
Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If Not Me.ActiveForm Is Nothing Then
MsgBox "Masih ada Form yang aktif"
Cancel = True
End If
End Sub

Latihan 2

Judul : Mencetak data peserta ke Form (Print Preview)

1. Tambahkan pada project Latihan 1 sebuah form, dan tanamkan sebuah ComboBox
dan Command sebagai berikut :

140
Modul Visual Basic 6
[email protected]
Kontrol Properti Value
Name frmDaftarPeserta
Caption Cetak Daftar Peserta
Form1
BorderStyle 3 - Fixed Dialog
MDIChild True
Combo1 Name cboPrinter
Name cmdCetak
Command1
Caption &Cetak

2. Tambahkan lagi sebuah form dengan nama frmPreview, dan atur properti form
sebagai berikut

Kontrol Properti Value


Name frmPreview
Form1 BorderStyle 0 -None
MDIChild True

3. Lakukan Koding pada frmDataPeserta sebagai berikut :

'General Declaration

'Struktur data untuk random file


Private Type Peserta
Email As String * 30
nama As String * 30
Alamat As String * 30
Kota As String * 20
Propinsi As String * 20
Negara As String * 20
Tempat As String * 20
TglLahir As Date
Pria As Integer
End Type
'Deklarasi variabel form level
Dim DatPeserta As Peserta
Private Function InchToTwips(x)
InchToTwips = x * 1440 '1 inch = 1440 Twips
End Function
Private Sub cetak(x, y, z)
frmPreview.CurrentX = InchToTwips(x) 'Set posisi pencetakkan berdasarkan x
If Not z Then
frmPreview.Print y;
Else
frmPreview.Print y 'Akhiri pencetakkan dengan CrLf
End If
End Sub

Private Sub Form_Load()


Dim i As Integer
For i = 0 To Printers.Count - 1
cboPrinters.AddItem Printers(i).DeviceName & " [" & _
Printers(i).DriverName & "]"
Next
cboPrinters.ListIndex = 0
End Sub
Private Sub cmdCetak_Click()
Load frmPreview
frmPreview.Top = 0
frmPreview.Left = 0
141
Modul Visual Basic 6
[email protected]
frmPreview.Width = InchToTwips(8) 'Mengatur Lebar form menjadi 8 inch
frmPreview.Height = InchToTwips(11) 'Mengatur tinggi form menjadi 11 inch

frmPreview.AutoRedraw = True 'Membuat pencetakkan dengan metoda menjadi


permanen

Open "Peserta.Dat" For Random As #1 Len = Len(DatPeserta)


JlhRec = LOF(1) / Len(DatPeserta)

For i = 1 To JlhRec
If frmPreview.CurrentY = 0 Then 'Jika halaman baru, maka set margin atas
frmPreview.CurrentY = InchToTwips(0.75)
frmPreview.Font.Name = "Courier New"
frmPreview.Font.Size = 14'Atur Font untuk judul pencetakkan
frmPreview.Font.Bold = True
Call cetak(0.75, "Laporan Data Peserta Indoprog-vb", True)
frmPreview.Line (0.75 * 1440, frmPreview.CurrentY)-(7.25 * 1440, frmPreview.CurrentY)
frmPreview.Font.Name = "Courier New"
frmPreview.Font.Size = 10
frmPreview.Font.Bold = False
Call cetak(0.75, "Email Nama Kota", True)
frmPreview.Line (0.75 * 1440, frmPreview.CurrentY)-(7.25 * 1440, frmPreview.CurrentY)
frmPreview.Print
End If
Get #1, i, DatPeserta
Call cetak(0.75, DatPeserta.Email & Space(2) & _
DatPeserta.nama & Space(2) & _
DatPeserta.Kota, True)
If i = JlhRec Then
frmPreview.Line (0.75 * 1440, frmPreview.CurrentY)-(7.25 * 1440, frmPreview.CurrentY)
Call cetak(0.75, "By indoprog-vb", True)
End If
'If frmPreview.CurrentY >= frmPreview.Height - InchToTwips(0.75) Then
'Printer.NewPage 'Sementara dimatikan
'End If
Next i
frmPreview.AutoRedraw = False
frmPreview.Visible = True
'Printer.EndDoc 'Sementara dimatikan
Close #1
End Sub

4. Pada menu di MDIForm lakukan koding untuk mnuDaftarPeserta.

Private Sub mnuDaftarPeserta_Click()


frmDaftarPeserta.Show
End Sub

Latihan 3

Judul : Tantangan Penyempurnaan Program

1. Ubah program print preview diatas menjadi cetak ke Printer.

2. Buatlah program Cetak Kwitansi menggunakan Printer.

3. Lengkapi program Latihan Modul 7 dengan fasilitas cetak Grafik ke Printer.

142
Modul Visual Basic 6
[email protected]
4. Buatlah program Cetak Sertifikat menggunakan Printer.

5. Tambahkan SplashScreen untuk project diatas.

Mengenal SQL 1
Structured Query Language (SQL) adalah suatu bahasa database standar industri. SQL
menyediakan Data Definiton Language (DDL) dan Data Manipulation Language (DML).
Walaupun dalam beberapa bagian saling bersangkutan, perintah DDL memungkinkan
kita untuk membuat dan mendefinisikan tabel (CREATE TABLE), dan index (CREATE
INDEX), sedangkan perintah DML memungkinkan anda untuk membangun query untuk
mengambil data (SELECT) dari beberapa tabel, menyisip (INSERT) data baru,
memperbaiki (UPDATE) data, dan menghapus (DELETE).

Data Definition Language (DDL)


Membuat Tabel Baru

CREATE TABLE table (field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)]
[NOT NULL] [index2] [, ...]] [, CONSTRAINT multifieldindex [, ...]])

Perintah CREATE TABLE digunakan untuk mendefinisikan suatu tabel baru beserta
fieldnya dan konstraint, jika NOT NULL disebutkan, maka record baru membutuhkan
data yang sah untuk field tersebut.

CONSTRAINT clause dapat digunakan untuk membuat berbagai batasan pada field
termasuk PRIMARY KEY, anda dapat juga menggunakan perintah CREATE INDEX
untuk membuat index dan PRIMARY KEY pada tabel yang ada. CONSTRAINT clause
menyerupai CREATE INDEX, tetapi dapat digunakan untuk membuat Relation antar
tabel.

CONSTRAINT name {PRIMARY KEY | UNIQUE | NOT NULL |


REFERENCES foreigntable [(foreignfield1, foreignfield2)]}

dimana :

table nama tabel yang akan dibuat


field1, field2 nama field
type jenis data pada masing-masing field
size ukuran field untuk jenis data TEXT dan Binary
index untuk membuat CONSTRAINT

jenis data pada database JET

Jenis Data Ukuran Penyimpanan Keterangan


Menyimpan segala jenis data sebagaimana adanya tanpa
BINARY 1 byte per karakter
translasi.

143
Modul Visual Basic 6
[email protected]
BIT 1 byte Menyimpan nilai Yes atau No.
BYTE 1 byte Menyimpan nilai integer 0 s/d 255
Menyimpan nilai numerik yang otomatis bertambah setiap
COUNTER 4 byte
record baru ditambahkan.
Menyimpan suatu nilai skalar antara
CURRENCY 8 byte – 922,337,203,685,477.5808 dan
922,337,203,685,477.5807
Menyimpan suatu nilai tanggal dan waktu antara tahun
DATETIME 8 byte
100 s/d 9999
Menyimpan suatu nomor identifikasi unik yang digunakan
GUID 128 byte
untuk RPC
Menyimpan suatu nilai floating point single-precision
dengan jangkauan – 3.402823E38 s/d – 1.401298E-45
SINGLE 4 byte
untuk nilai negatif , 1.401298E-45 s/d 3.402823E38 untuk
nilai positif dan 0.
Menyimpan suatu nilai floating point double-precision
dengan jangkauan – 1.79769313486232E308 s/d
DOUBLE 8 byte – 4.94065645841247E-324 untuk nilai negatif,
4.94065645841247E-324 s/d 1.79769313486232E308
untuk nilai positif, dan 0
Menyimpan suatu nilai short integer antara – 32,768 dan
SHORT 2 byte
32,767.
Menyimpan suatu nilai long integer antara
LONG
– 2,147,483,648 dan 2,147,483,647.
LONGTEXT 1 byte per karakter Kosong s/d maksimal 1.2 gigabytes.
Kosong s/d maksimal 1.2 gigabytes. Digunakan untuk
LONGBINARY Sesuai dengan kebutuhan
objek OLE.
TEXT 1 byte per karakter 0 s/d 255 karakter

Contoh :

Tabel Forum
Nama Field Type Size AutoIncrField AllowNulls Require
ForumID Text 25 Tidak Ya
Keterangan Text 50
Alamat Text 50 Tidak Ya

Primary Key (P_Key) dengan field ForumID

Perintah SQL :

CREATE TABLE FORUM (


ForumID TEXT(25) NOT NULL CONSTRAINT P_KEY PRIMARY KEY,
Keterangan TEXT(50),
Alamat TEXT(50) NOT NULL);

atau

CREATE TABLE FORUM (


ForumID TEXT(25) NOT NULL ,
Keterangan TEXT(50),
Alamat TEXT(50) NOT NULL,
CONSTRAINT P_KEY PRIMARY KEY (ForumID));

144
Modul Visual Basic 6
[email protected]
Tabel Status
Nama Field Type Size AutoIncrField AllowNulls Require
Status Byte 1 Tidak Ya
Keterangan Text 50

Primary Key (P_Key) dengan field Status

Perintah SQL :

CREATE TABLE STATUS (


Status BYTE NOT NULL CONSTRAINT P_KEY PRIMARY KEY,
Keterangan TEXT(50));

Tabel Peserta
Nama Field Type Size AutoIncrField AllowNulls Require
Email Text 25 Tidak Ya
Nama Text 50
Alamat Text 50
Kota Text 50
Telepon Text 25
Homepage Text 50
Perusahaan Text 50
TanggalGabung Date 8

Primary Key (P_Key) dengan field Email

Perintah SQL :

CREATE TABLE PESERTA (Email TEXT(25) NOT NULL CONSTRAINT P_KEY PRIMARY KEY,
Nama TEXT(50),
Alamat TEXT(50),
Kota TEXT(50),
Telepon TEXT(50),
Homepage TEXT(50),
Perusahaan TEXT(50),
TanggalGabung Date);

Tabel Aktifitas
Nama Field Type Size AutoIncrField AllowNulls Require
ID Long 4 Ya
Email Text 25 Tidak Ya
ForumID Text 25 Tidak Ya
Status Byte Tidak Ya

Primary Key (P_Key) dengan field ID

Berserta Relation terhadap tabel PESERTA, FORUM dan STATUS

145
Modul Visual Basic 6
[email protected]

Nama Field (Foreign key) Foreign Tabel Foreign Field


Email Peserta Email
ForumID Forum ForumID
Status Status Status

Perintah SQL :

CREATE TABLE AKTIFITAS (


ID COUNTER CONSTRAINT P_KEY PRIMARY KEY,
Email TEXT(25) NOT NULL CONSTRAINT AktifitasPeserta REFERENCES PESERTA(Email),
ForumID TEXT(25) NOT NULL CONSTRAINT AktifitasForum REFERENCES FORUM
(ForumID),
Status BYTE CONSTRAINT AktifitasStatus REFERENCES STATUS(Status));

Membuat Index
CREATE [ UNIQUE ] INDEX indexON table (field [ASC|DESC][, field [ASC|DESC], ...])
[WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]

Membuat suatu index pada tabel yang telah ada.

dimana :

index nama dari index yang akan dibuat


table nama dari tabel yang akan mengandung index tersebut
field nama dari field yang akan di index

Gunakan UNIQUE untuk membuat nilai unik terhadap field tertentu sehingga tidak
memungkinkan duplikasi data. Gunakan WITH clause untuk menentukan apakah :

146
Modul Visual Basic 6
[email protected]
• Tidak memperbolehkan pemasukan nilai Null pada field yang diindex dengan
menggunakan option DISALLOW NULL.
• Menghindarkan record dengan nilai Null pada field yang diindex untuk
diikutsertakan dalam index.
• Membuat index sebagai PRIMARY, setiap tabel hanya dapat memiliki satu index
PRIMARY.

Contoh membuat Index S_KEY berdasarkan Nama pada tabel PESERTA, perintah
SQL DDL-nya adalah sebagai berikut :

CREATE INDEX S_KEY ON PESERTA(NAMA);

Memodifikasi Tabel

ALTER TABLE table {ADD {COLUMN field type[(size)] [NOT NULL] [CONSTRAINT
index] |CONSTRAINT multifieldindex} |DROP {COLUMN field I CONSTRAINT
indexname} }

Melakukan modifikasi terhadap rancangan tabel yang telah ada.

dimana :

table Nama dari tabel


field Nama field yang akan ditambah (ADD), dihapus (DROP)
type Type field yang akan ditambahkan
size Ukuran field yang akan ditambahkan
index Perintah CONSTRAINT clause
indexname Nama index yang akan dihapus

Contoh menambahkan field Keterangan Text(50) pada tabel aktifitas :

ALTER TABLE Aktifitas ADD COLUMN Keterangan Text(50);

Menghapus Table atau Index

DROP {TABLE table | INDEX index ON table}

Menghapus tabel yang ada dalam database, atau index dari suatu tabel

table nama tabel yang akan dihapus atau tabel dimana index berada
index nama index yang akan dihapus

Contoh menghapus tabel TEMP

DROP TABLE Temp;

Latihan 1

Judul : Pembuatan Tabel, Index dan Konstraint dengan DML


147
Modul Visual Basic 6
[email protected]
1. Aktifkan Visual Data Manager, dan buatlah suatu Database file baru Rental.Mdb

2. Dengan menggunakan DDL SQL buatlah tabel-tabel berikut ini

Tabel Anggota

Nama Field Type Size AutoIncrField AllowNulls Require


KodeAnggota Text 5 Tidak Ya
Nama Text 50 Tidak Ya
Alamat Text 50 Tidak Ya
Telepon Text 15 Ya
Limit Byte Tidak Ya
Daftar DateTime Ya

PrimaryKey P_KEY KodeAnggota

Caranya :

Pada SQL Statement Window, ketikkan perintah SQL DDL berikut :

CREATE TABLE Anggota (


KodeAnggota Text(5) NOT NULL CONSTRAINT P_KEY PRIMARY KEY,
Nama Text(50) NOT NULL,
Alamat Text(50) NOT NULL,
Telepon Text(15),
Limit Byte NOT NULL,
Daftar DateTime);

Lakukan klik pada tombol Execute, dan akan muncul dialog box :

?? <tidak ada gambar>??

Lakukan klik pada No

Kalau muncul dialog box berikut, abaikan saja, karena DDL SQL tidak menghasilkan
Recordset

Klik kanan pada Database Window, dan pilih Refresh List

Tabel CD

Nama Field Type Size AutoIncrField AllowNulls Require


KodeCD Text 7 Tidak Ya
Judul Text 50 Tidak Ya
Kategori Text 20 Tidak Ya
Aktor Text 30 Ya
Harga Currency Tidak Ya
Daftar DateTime Ya

PrimaryKey P_KEY KodeCD

148
Modul Visual Basic 6
[email protected]
Perintah SQL DDL :

CREATE TABLE CD (
KodeCD Text(7) NOT NULL CONSTRAINT P_KEY PRIMARY KEY,
Judul Text(50) NOT NULL, Kategori Text(20) NOT NULL,
Aktor Text(30),
Harga Currency NOT NULL,
Daftar DateTime);

Tabel Transaksi

Nama Field Type Size AutoIncrField AllowNulls Require


NoTransaksi Long Ya Tidak Ya
Tanggal DateTime Tidak Ya
KodeAnggota Text 5 Tidak Ya
KodeCD Text 7 Tidak Ya
Kembali DateTime Ya
Denda Currency Ya

PrimaryKey P_KEY NoTransaksi

dan Relation sebagai berikut :

Perintah SQL DDL :

CREATE TABLE Transaksi (NoTransaksi Counter CONSTRAINT P_KEY PRIMARY KEY,


Tanggal DateTime NOT NULL,
KodeAnggota Text(5) NOT NULL CONSTRAINT TransaksiAnggota REFERENCES
Anggota(KodeAnggota),
KodeCD Text(7) NOT NULL CONSTRAINT TransaksiCD REFERENCES CD(KodeCD),
Kembali DateTime,
Denda Currency);

3. Tambahkan Index untuk tabel Anggota berdasarkan nama, tabel CD berdasarkan


Judul

Perintah SQL DDL :

149
Modul Visual Basic 6
[email protected]
CREATE INDEX S_KEY ON Anggota (Nama);
CREATE INDEX S_KEY ON CD (Judul);

4. Tambahkan field BlackList pada Tabel Anggota, dan field Status pada CD

Nama Field Type Size AutoIncrField AllowNulls Require


BlackList Bit Ya

Perintah SQL DDL :

ALTER TABLE Anggota ADD COLUMN BlackList Bit;


Nama Field Type Size AutoIncrField AllowNulls Require
Status Text 1 Ya

Perintah SQL DDL :

ALTER TABLE CD ADD COLUMN Status Text(1);

Latihan 2

Judul : Tantangan pemakaian DDL SQL

1. Aktifkan Visual Data Manager, dan buatlah suatu Database file baru Akademik.Mdb

2. Dengan menggunakan DDL SQL buatlah tabel-tabel berikut ini, definisikan Primary
Key masing-masing tabel dan Relation antar tabel.

Tabel Fakultas

Nama Field Type Size AutoIncrField AllowNulls Require


Fakultas Text 2 Tidak Ya
Keterangan Text 50 Tidak Ya

Tabel Jurusan

Nama Field Type Size AutoIncrField AllowNulls Require


Jurusan Text 2 Tidak Ya
Keterangan Text 50 Tidak Ya

Tabel Mahasiswa

Nama Field Type Size AutoIncrField AllowNulls Require


NIM Text 10 Tidak Ya
Nama Text 50 Tidak Ya
Fakultas Text 2 Tidak Ya
Jurusan Text 2 Tidak Ya

Tabel Kuliah

150
Modul Visual Basic 6
[email protected]
Nama Field Type Size AutoIncrField AllowNulls Require
MataKuliah Text 6 Tidak Ya
Keterangan Text 50 Tidak Ya
SKS Byte Tidak Ya
Semester Byte Tidak Ya

Tabel Dosen

Nama Field Type Size AutoIncrField AllowNulls Require


NIP Text 10 Tidak Ya
Nama Text 50 Tidak Ya

Tabel KHS

Nama Field Type Size AutoIncrField AllowNulls Require


Id Long Ya Ya
NIM Text 10 Tidak Ya
MataKuliah Text 6 Tidak Ya
NIP Text 10 Tidak Ya
Tanggal DateTime Tidak Ya
NilaiHuruf Text 1 Tidak Ya

Latihan 3

Judul : Memanfaatkan beberapa Data Kontrol pada 1 Form untuk


Validasi.

1. Buatlah Project Baru, dan Form Entri data untuk tabel Anggota dan tabel CD

Catatan : Limit mesti Numerik, Daftar mesti Tanggal, serta memperhatikan NOT NULL
pada tabel

151
Modul Visual Basic 6
[email protected]

Catatan : Harga mesti Numerik, Daftar mesti Tanggal, serta memperhatikan NOT NULL
pada tabel

2. Buatlah User Interface untuk Transaksi Peminjaman CD berikut, sehingga dapat


menampilkan nama dan alamat sesuai dengan KodeAnggota dan Judul untuk KodeCD.

Kontrol Properti Nilai


Nama RsTransaksi
DatabaseName C:\Rental\Rental.Mdb
Data1
Recordset Transaksi
RecordsetType Table
Nama RsAnggota
DatabaseName C:\Rental\Rental.Mdb
Data2 Recordset Transaksi
RecordsetType Table
Visible False
Data3 Nama RsCD
DatabaseName C:\Rental\Rental.Mdb
Recordset Transaksi
RecordsetType Table

152
Modul Visual Basic 6
[email protected]
Visible False

Untuk kontrol lainnya atur sendiri sesuai dengan tampilan diatas

Lakukan koding pada bagian General Declaration

'Deklarasi Enumerated type untuk aksi oleh pemakai


Private Enum Aksi
flNone = 0
flAdd = 1 'Tambah data
flEdit = 2 'Perbaiki data
End Enum

'Deklarasi Variabel Flag adalah Aksi


Dim Flag As Aksi

Private Sub AturTombol(Add, Update, Cancel)


cmdAdd.Enabled = Add 'Atur keaktifan
cmdUpdate.Enabled = Update
cmdCancel.Enabled = Cancel
End Sub

Private Sub Kunci(x)


txtTanggal.Locked = x 'Kunci textbox dari
txtKodeAnggota.Locked = x 'perubahan oleh pemakai
txtKodeCD.Locked = x
End Sub

Lakukan koding pada Form Load untuk mengatur Index masing-masing Data Kontrol

Private Sub Form_Load()


RsCD.Refresh 'Refresh Data Kontrol RSCD
RsCD.Recordset.Index = "P_KEY" 'Tentukan Index yang digunakan
RsAnggota.Refresh
RsAnggota.Recordset.Index = "P_KEY"
RsTransaksi.Refresh
RsTransaksi.Recordset.LockEdits = False
End Sub

Lakukan koding pada Kontrol RsTransaksi

Private Sub RsTransaksi_Error(DataErr As Integer, Response As Integer)


Select Case DataErr
Case 3163
MsgBox "Panjang data melebihi ukuran field"
Response = vbDataErrContinue
Case Else
Response = vbDataErrDisplay
End Select
End Sub
Private Sub RsTransaksi_Reposition()
RsAnggota.Recordset.Seek "=", txtKodeAnggota.Text
If Not RsAnggota.Recordset.NoMatch Then
lblNama = RsAnggota.Recordset("Nama")
lblAlamat = RsAnggota.Recordset("Alamat")
End If
RsCD.Recordset.Seek "=", txtKodeCD.Text
If Not RsCD.Recordset.NoMatch Then
lblJudul = RsCD.Recordset("Judul")
End If

153
Modul Visual Basic 6
[email protected]
If Flag = flNone Then
If RsTransaksi.Recordset.EOF Then 'Jika tabel kosong
Call AturTombol(True, False, False)
cmdFirst.Enabled = False
cmdPrev.Enabled = False
cmdNext.Enabled = False
cmdLast.Enabled = False
Else
Call AturTombol(True, False, False)
cmdFirst.Enabled = True
cmdPrev.Enabled = True
cmdNext.Enabled = True
cmdLast.Enabled = True
End If
Call Kunci(True)
End If
End Sub

Lakukan koding pada Command Add Click untuk mengatur data tanggal dan membuka
penguncian

Private Sub cmdAdd_Click()


Flag = flAdd 'Tandai sebagai tambah data
RsTransaksi.Recordset.AddNew
Call Kunci(False) 'Buka penguncian
Call AturTombol(False, True, True)
txtTanggal.Text = Format(Date, "dd-mmm-yyyy")
txtTanggal.SetFocus
End Sub

Lakukan koding pada txtKodeAnggota LostFocus untuk mencari data anggota pada
RsAnggota

Private Sub txtKodeAnggota_LostFocus()


If txtKodeAnggota.Text <> "" Then
RsAnggota.Recordset.Seek "=", txtKodeAnggota.Text
If Not RsAnggota.Recordset.NoMatch Then
lblNama = RsAnggota.Recordset("Nama")
lblAlamat = RsAnggota.Recordset("Alamat")
Else
MsgBox "Kode Anggota belum terdaftar !", vbCritical, "Warning"
txtKodeAnggota.SetFocus
End If
End If
End Sub

Lakukan hal yang sama untuk txtKodeCD

Private Sub txtKodeCD_LostFocus()


If txtKodeCD.Text <> "" Then
RsCD.Recordset.Seek "=", txtKodeCD.Text
If Not RsCD.Recordset.NoMatch Then
lblJudul = RsCD.Recordset("Judul")
Else
MsgBox "Judul CD belum terdaftar !", vbCritical, "Warning"
txtKodeCD.SetFocus
End If
End If
End Sub

Lakukan Koding pada Command Update


154
Modul Visual Basic 6
[email protected]
Private Sub cmdUpdate_Click()
On Error GoTo ErrcmdUpdate_click
If txtKodeAnggota.Text = "" Then
MsgBox "Kode Anggota tidak boleh kosong", vbCritical, "Warning"
Exit Sub
End If
If txtKodeCD.Text = "" Then
MsgBox "Kode CD tidak boleh kosong", vbCritical, "Warning"
Exit Sub
End If
If Not IsDate(txtTanggal.Text) Then
MsgBox "Periksa tanggal Peminjaman", vbCritical, "Warning"
End If

RsTransaksi.Recordset.Update
Flag = flNone
Call Kunci(True)
Call AturTombol(True, False, False)
RsTransaksi.Recordset.Bookmark = RsTransaksi.Recordset.LastModified
CancelcmdUpdate:
Exit Sub
ErrcmdUpdate_click:
Select Case Err.Number
Case 3022
MsgBox "Telah terjadi duplikasi pada Transaksi", vbOKOnly + vbInformation, "Warning"
Case 3167
MsgBox "Data telah dihapus pemakai lain" & vbCrLf & _
"Lakukan refresh data anda !", vbOKOnly + vbInformation
Case 3197
'Data pada recordset telah berubah
'sejak ditampilkan.
MsgBox "Data telah diubah oleh pemakai lain !", vbOKOnly + vbInformation
'Hal ini secara otomatis akan menyegarkan
'kembali recordset untuk menampilkan data terakhir
RsTransaksi.Recordset.Move 0
Resume CancelcmdUpdate
Case 3260
'Record dikunci pemakai lain
nHitung = nHitung + 1
'Mencoba mengunci dua kali
'Memungkinkan pemakai membuat keputusan ulangi, batal
If nHitung > 2 Then
nPilih = MsgBox("Data sedang dikunci pemakai lain" & vbCrLf & _
"Ulangi penguncian ?", vbYesNo + _
vbQuestion)
If nPilih = vbYes Then
nHitung = 1
Else
Resume CancelcmdUpdate
End If
End If
DoEvents 'menjalankan event windows
'menunda sejumlah waktu random
nTunda = nHitung ^ 2 * Int(Rnd * 3000 + 1000)
For i = 1 To nTunda: Next i
Resume
Case Else
MsgBox "Error " & Err & ":" & Error, vbOKOnly
Resume CancelcmdUpdate
End Select
End Sub

Dan Akhirnya koding untuk tombol Cancel


155
Modul Visual Basic 6
[email protected]
Private Sub cmdCancel_Click()
RsTransaksi.Recordset.CancelUpdate
Call Kunci(True)
Flag = flNone
Call AturTombol(True, False, False)
End Sub

Catatan :

Untuk Tombol Navigasi lakukan koding sendiri.

Mengenal SQL 2
Sebagaimana telah diterangkan pada Modul sebelumnya bahwa perintah SQL dibagi
atas dua kelompok besar yaitu DDL (Data Definition Language) dan DML (Data
Manipulation Language). Pada DML, terbagi atas APPEND, UPDATE, DELETE, dan
SELECT query yang dapat digunakan untuk pengolahan data.

Menambah data dengan APPEND query


INSERT INTO target [(field1[, field2[, ...]])]
VALUES (value1[, value2[, ...])

Menambah suatu record ke table, hal ini dikenal sebagai append query.

Contoh :

KodeAnggota Nama Alamat Telepon Limit Daftar Blacklist


Susan Jl. Thamrin No. 95 23-Sept-
SD001 4513490 3 False
Dewichan Medan 2001
INSERT INTO Anggota (KodeAnggota, Nama, Alamat, Telepon, Limit, BlackList)
VALUES ('SD001','Susan Dewichan','Jl. Thamrin No. 95','4513490',3,#23-Sept-2001#);

Menghapus data dengan DELETE query


DELETE FROM table
WHERE criteria

Menghapus satu atau lebih record dari tabel yang berada di daftar FROM clause yang
memenuhi WHERE clause.

Pada tabel yang memiliki hubungan one-to-many relationship dengan tabel lain.
Operasi Cascade delete dapat menyebabkan record lain yang berada pada sisi many
ikut terhapus ketika penghapusan di lakukan terhadap data pada sisi one.

Penting

· Data yang telah dihapus dengan delete query, tidak dapat dibatalkan.
156
Modul Visual Basic 6
[email protected]
· Lakukan backup terhadap data anda setiap saat. Jika anda salah menghapus, maka
anda dapat mengambil kembali dari backup.

Contoh :

DELETE FROM Anggota WHERE BlackList;

Memperbaiki Data dengan UPDATE query


Mengubah nilai pada field-field yang ditentukan pada tabel berdasarkan kriteria
tertentu.

Syntax

UPDATE table
SET newvalue
WHERE criteria;

Penting :

· UPDATE tidak menghasilkan suatu himpunan hasil. Juga, setelah anda mengupdate
record dengan menggunakan update query, anda tidak dapat membatalkan operasi
tersebut. Jika anda ingin mengetahui record mana saja yang akan terupdate, pertama
anda perlu melakukan select query dengan kriteria yang sama.
· Lakukan backup terhadap data anda setiap saat. Jika anda salah menghapus, maka
anda dapat mengambil kembali dari backup.

Contoh :

UPDATE Anggota SET BlackList = True WHERE KodeAnggota = 'SD001';

Mengambil Data dengan SELECT query


Memerintahkan kepada Microsoft Jet Engine untuk mengembalikan data dari database
dalam bentuk recordset.

Syntax yang paling minimum dari SELECT statement adalah

SELECT fields FROM table

dimana fields adalah daftar dari field-field yang akan diambil dari tabel, anda dapat
menggunakan tanda * (Asterisk) untuk menyatakan seluruh field dari tabel.

Contoh :

SELECT KodeAnggota, Nama, Alamat, Telepon, Limit, Daftar, Blacklist FROM Anggota;

Atau

SELECT * FROM Anggota;

Menganti nama kolom recordset dengan reserved word AS


157
Modul Visual Basic 6
[email protected]
Ketika recordset terbentuk, Microsoft Jet Engine menggunakan nama field sebagai
nama objek field pada recordset, anda dapat menentukan nama objek field tersebut
dengan reserved word AS.

Contoh :

SELECT KodeAnggota, Nama, Daftar As TanggalDaftar FROM Anggota;

dalam hal ini nama objek field TanggalDaftar akan digunakan untuk field Daftar.

Anda dapat menggunakan AS untuk menentukan nama objek field pada recordset yang
merupakan hasil dari fungsi Agregate maupun ekspresi.

Contoh :

SELECT Count(*) AS JlhAnggota FROM Anggota;

Akan mendapat suatu recordset dengan field JlhAnggota dan record tunggal yang berisi
jumlah anggota yang terdaftar pada tabel Anggota.

Membatasi hasil query dengan WHERE clause

SELECT fieldlist
FROM tableexpression
WHERE criteria

Sebagaimana pemakaian WHERE clause pada UPDATE dan DELETE query, anda
dapat menggunakan WHERE clause untuk membatasi data yang dikembalikan
berdasarkan kriteria tertentu.

Contoh :

SELECT * FROM Anggota WHERE TanggalDaftar <= #01-Jan-2001#;

Mengurut hasil query dengan ORDER BY clause

SELECT fieldlist
FROM table
WHERE selectcriteria
[ORDER BY field1 [ASC | DESC ][, field2 [ASC | DESC ]][, ...]]]

Anda dapat menggunakan ORDER BY clause untuk menentukan urutan data hasil
query berdasarkan field tertentu, pada defaultnya adalah Ascending kalau tidak
disebutkan ASC ataupun DESC.

Contoh :

SELECT * FROM Anggota ORDER BY Nama;


SELECT * FROM Anggota WHERE TanggalDaftar <= #01-Jan-2001# ORDER BY Nama;

Mengetahui statistik data dengan Fungsi Agregate

158
Modul Visual Basic 6
[email protected]
Anda dapat menggunakan fungsi-fungsi Agregate seperti AVG (rata-rata), COUNT
(jumlah data), MIN atau MAX, SUM (hasil jumlah), StDEV atau StDEVP (standard
deviasi sample/populasi), VAR atau VARP (variasi sample / populasi) untuk
mendapatkan nilai statistifk field terentu.

Contoh :

SELECT Sum(Denda) AS JlhDenda FROM Transaksi Where Kembali = #20-Sep=2001#;

Akan mendapat suatu recordset dengan field JlhDenda dan record tunggal yang berisi
jumlah perhitungan field denda pada tanggal 20 September 2001 dari tabel Transaksi.

Meringkas data dengan GROUP BY clause

SELECT fieldlist
FROM table
WHERE criteria
[GROUP BY groupfieldlist]

Anda dapat menggunakan ORDER BY clause untuk meringkas record yang nilai
fieldnya sama menjadi satu record dikombinasikan dengan fungsi Agregate untuk
mendapatkan statistik dari masing-masing ringkasan.

Misalnya kita ingin mendapatkan suatu daftar recordset yang berisi jumlah denda
harian berdasarkan tanggal pengembalian (Kembali), maka perintah SQL adalah :

SELECT Kembali, Sum(Denda) AS JlhDenda FROM Transaksi ORDER BY kembali;

Membatasi data yang telah diringkas dengan HAVING clause

SELECT fieldlist
FROM table
WHERE selectcriteria
GROUP BY groupfieldlist
[HAVING groupcriteria]

Jika anda menggunakan WHERE clause untuk membatasi data hasil query
berdasarkan kriteria tertentu, maka HAVING clause digunakan untuk membatasi data
setelah GROUPING dilakukan.

Contoh :

SELECT Kembali, Sum(Denda) AS JlhDenda FROM Transaksi


ORDER BY kembali
HAVING Sum(Denda) > 10000;

Mendapatkan daftar hasil jumlah denda harian, dimana yang dikembalikan hanya
jumlah denda yang diatas 10000.

Menggunakan predikat ALL, DISTINCT, DISTINCT ROW dan TOP

159
Modul Visual Basic 6
[email protected]
SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]
FROM table

Secara default kalau tidak dituliskan, maka predikat ALL akan digunakan. Anda dapat
menggunakan predikat DISTINCT untuk mengambil satu record dari beberapa record
yang memiliki nilai yang sama.

Contoh :

SELECT DISTINCT Aktor FROM CD;

Akan menghasilkan daftar nama Aktor dari tabel CD yang kita miliki. pemakaian
predikat DISTINCT dalam hal ini untuk memastikan hanya 1 aktor terambil dari
beberapa CD yang mungkin memiliki aktor utama yang sama.

Pemakaian predikat TOP untuk mendapatkan n record atau n persen record dari daftar
teratas.

Misalnya kita ingin mendapatkan 10 kode CD yang paling sering diTransaksi oleh
Anggota.

SELECT TOP 10 KodeCD, Count(*) FROM Transaksi


GROUP BY KodeCD
ORDER BY Count(*) DESC;

Syntax penulisan kongkrit dari SELECT statement

SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [, [table.]field2 [AS alias2]


[, ...]]}
FROM tableexpression [, ...]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]

Mengambil kolom dari dua atau lebih tabel dengan Operasi INNER JOIN

Kadang-kadang kita perlu melakukan kombinasi kolom-kolom dari beberapa tabel


menjadi suatu recordset tunggal dimana yang memiliki nilai yang sama pada kolom
tertentu.

Pada operasi INNER JOIN akan mengabungkan record-record yang memiliki nilai sama
pada kolom tertentu pada kedua tabel.

FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2

Perhatikan kembali tabel-tabel pada Rental.Mdb modul sebelumnya :

Tabel Transaksi

Nama Field Type


NoTransaksi Long

160
Modul Visual Basic 6
[email protected]
Tanggal DateTime
KodeAnggota Text
KodeCD Text
Kembali DateTime
Denda Currency

Tabel CD

Nama Field Type


KodeCD Text
Judul Text
Kategori Text
Aktor Text
Harga Currency
Daftar DateTime

Tabel Anggota

Nama Field Type


KodeAnggota Text
Nama Text
Alamat Text
Telepon Text
Limit Byte
Daftar DateTime

Misalnya kita ingin mengambil suatu recordset yang berisi kolom-kolom berikut :

Tabel
Kolom Kriteria
sumber
Tanggal Transaksi
Judul Transaksi
Nama Anggota
Denda Transaksi Not Null

Dalam hal ini kita akan menggambil data dari dua tabel, yaitu tabel Transaksi, dan tabel
Anggota, dimana dalam pengambilan tersebut KodeAnggota pada tabel Transaksi
harus bersesuaian dengan KodeAnggota pada tabel Anggota, sehingga FROM clause-
nya dapat ditulis menjadi :

FROM Transaksi INNER JOIN


Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota

Sehingga Perintah SQL adalah sebagai berikut :

161
Modul Visual Basic 6
[email protected]
SELECT Transaksi.Tanggal, Transaksi.KodeAnggota, Anggota.Nama, Transaksi.Denda
FROM Transaksi INNER JOIN
Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota
WHERE NOT Denda Is NULL;

Pada perintah SELECT yang menggambil kolom lebih dari satu tabel, kita perlu
menuliskan nama Tabel dan Field yang dipisahkan dengan dot (.).

Anda dapat melakukan nested untuk mengambil data lebih dari dua
tabel

Misalnya kita ingin mengambil suatu recordset yang berisi kolom-kolom berikut :

Kolom Tabel sumber Kriteria


Tanggal Transaksi
Judul CD
Nama Anggota
Harga CD

Dalam hal ini kita akan menggambil data dari tiga tabel, yaitu tabel Transaksi, tabel CD
dan tabel Anggota, dimana dalam pengambilan tersebut KodeCD pada tabel Transaksi
harus bersesuaian dengan KodeCD pada tabel CD, dan KodeAnggota pada tabel
Transaksi harus bersesuaian dengan KodeAnggota pada tabel Anggota, sehingga
FROM clause-nya dapat ditulis menjadi :

FROM (Transaksi INNER JOIN Anggota ON Transaksi.KodeAnggota =


Anggota.KodeAnggota) INNER JOIN CD ON Transaksi.KodeCD =CD.KodeCD;

atau

FROM (Transaksi INNER JOIN CD ON Transaksi.KodeCD =CD.KodeCD) INNER JOIN


Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota ;

dan perintah SQLnya adalah sebagai berikut :

SELECT Transaksi.NoTransaksi, CD.Judul, CD.Harga, Anggota.Nama


FROM (Transaksi INNER JOIN Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota)
INNER JOIN CD ON Transaksi.KodeCD =CD.KodeCD;

atau

SELECT Transaksi.NoTransaksi, CD.Judul, CD.Harga, Anggota.Nama


FROM (Transaksi INNER JOIN CD ON Transaksi.KodeCD =CD.KodeCD)
INNER JOIN Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota ;

Operasi LEFT JOIN, RIGHT JOIN

Jika pada operasi INNER JOIN, recordset yang dihasilkan adalah data-data yang
memiliki nilai yang bersesuaian pada kolom tertentu, sedangkan operasi OUTER JOIN
seperti LEFT JOIN dan RIGHT JOIN dapat digunakan untuk mengambil seluruh data
dari suatu tabel walaupun pada tabel lainnya tidak ada data yang bersesuaian.

Contoh :
162
Modul Visual Basic 6
[email protected]
SELECT Transaksi.Tanggal, Transaksi.KodeAnggota, Anggota.Nama, Transaksi.Denda
FROM Transaksi LEFT JOIN
Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota
WHERE NOT Denda Is NULL;

Membuat union query dengan Operasi UNION

Membuat suatu query union, yang mana mengabung hasil dari dua query atau tabel
dengan menghilangkan record duplikat, untuk mengikutkan record yang duplikat, anda
dapat mencamtumkan ALL.

[TABLE] query1 UNION [ALL] [TABLE] query2 [UNION [ALL] [TABLE] queryn [ ... ]]

Misalnya kita memiliki dua tabel History (data transaksi bulan lalu), Transaksi (data
transaksi sekarang), kita ingin mengambil data dari dua tabel tersebut menjadi satu
recordset.

SELECT * FROM History UNION ALL SELECT * FROM Transaksi;

Membuat CROSSTAB query dengan TRANSFORM statement

TRANSFORM aggfunction
selectstatement
PIVOT pivotfield [IN (value1[, value2[, ...]])]

Anda dapat menggunakan perintah TRANSFORM untuk membuat suatu Crosstab


query yang merupakan ringkasan data yang kolomnya berasal dari field atau ekspresi.

Misalnya kita akan membuat ringkasan data jumlah transaksi peminjaman CD oleh
masing-masing Anggota (baris) pada masing-masing bulan JAN, FEB, ... (kolom)

Maka perintahnya adalah :

163
Modul Visual Basic 6
[email protected]
TRANSFORM Count(NoTransaksi)
SELECT Transaksi.KodeAnggota
FROM Transaksi
GROUP BY Transaksi.KodeAnggota
PIVOT Format([Tanggal],"mmm") In
("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

Latihan 1

Judul : Mencoba Append, Update, dan Delete query

1. Dengan menggunakan Visual Data Manager

2. Dengan menggunakan Append query, tambahkan data-data berikut ke :

Tabel Anggota

KodeAnggota Nama Alamat Telepon Limit Daftar Blacklist


Jl. Sudirman 10/22 22-Sept-
HW001 Hendra 4521056 3 False
Medan 2001
Susan Jl. Thamrin No. 95 23-Sept-
SD001 4513490 3 False
Dewichan Medan 2001

Tabel CD

KodeCD Judul Kategori Aktor Harga Daftar Status


MI01.01 Mission Impossible Action Tom Cruise 3500 10-Mar-2000 B
RA01.01 Run Away Bride Drama Julia Robert 3500 22-Apr-2000 B

Tabel Transaksi

Tanggal KodeAnggota KodeCD


23-Sept-2001 HW001 RA01.01

3. Dengan menggunakan UPDATE query, set BlackList untuk KodeAnggota SD001


menjadi True

4. Dengan menggunakan DELETE query, hapus data Anggota yang di BlackList.

Latihan 2

Judul : Mencoba SELECT query

1. Dengan menggunakan Visual Data Manager aktifkan Nwind.Mdb yang merupakan


database sample pada Visual Basic maupun Microsoft Access.

Perhatikan tabel-tabel yang ada.


164
Modul Visual Basic 6
[email protected]
• Categories
• Customers
• Employees
• Orders
• Orders Details
• Products
• Shippers
• Suppliers

2. Aktifkan tampilan dengan menggunakan DBGrid, yang dapat dipilih dari Toolbar.

3. Bukalah tabel Customers, dan perhatikan kolom-kolom didalamnya.

• CustomerId
• CompanyName
• ContactName
• ContactTitle
• Address
• City
• Region
• PostalCode
• Country
• Phone
• Fax

4. Pada Jendela SQL ketikkan perintah SQL berikut, dan klik pada Execute.

SELECT CustomerId, CompanyName, ContactName FROM Customers;

Dengan menggunakan WHERE clause, batasi data yang ContactTitle adalah Sales
Manager

SELECT CustomerId, CompanyName, ContactName FROM Customers WHERE


ContactTitle = 'Sales Manager';

Dengan menggunakan ORDER BY clause, urutkan recordset hasil berdasarkan


CompanyName secara Descending.

SELECT CustomerId, CompanyName, ContactName FROM Customers WHERE


ContactTitle = 'Sales Manager' ORDER BY CompanyName DESC;

Hitung Jumlah pelangan yang terdapat di Country USA dengan Fungsi Agregate Count

SELECT Count(*) As JlhPelangan FROM Customers WHERE Country = 'USA';

Buatlah Statistik jumlah pelangan berdasarkan Country dengan GROUP BY clause

SELECT Country, Count(*) As JlhPelangan FROM Customers GROUP BY Country;

Buatlah Daftar Negara yang mana jumlah pelangan diatas 10 perusahaan dengan
HAVING clause

165
Modul Visual Basic 6
[email protected]
SELECT Country, Count(*) As JlhPelangan FROM Customers GROUP BY Country
HAVING Count(*) >= 10;

Buatlah Daftar Negara dimana langanan berada (tidak boleh double) dengan
menggunakan predikat DISTINCT

SELECT DISTINCT Country FROM Customers;

Buatlah Daftar 10 besar Negara berdasarkan jumlah pelanggan, dengan predikat TOP

SELECT TOP 10 Country, Count(*) As JlhPelangan FROM Customers GROUP BY


Country ORDER BY Count(*) DESC;

5. Bukalah tabel Products dan perhatikan kolom-kolom didalamnya.

• ProductID
• ProductName
• SupplierID
• CategoryID
• QuantityPerUnit
• UnitPrice
• UnitInStock
• UnitOnOrder
• ReorderLevel
• Discontinued

6. Bukalah tabel Categories dan perhatikan kolom-kolom didalamnya.

• CategoryID
• CategoryName
• Description
• Picture

7. Dengan menggunakan perintah SQL dan operasi INNER JOIN antara tabel Products
dan Categories, tampilkan kolom ProductName, CategoryName, dan Unit Price.

SELECT Products.ProductName, Categories.CategoryName, Products.UnitPrice FROM


Products INNER JOIN Categories ON Products.CategoryId = Categories.CategoryId;

8. Bukalah tabel Suppliers dan perhatikan kolom-kolom didalamnya.

• SupplierId
• CompanyName
• ContactName
• ContactTitle
• Address
• City
• Region
• PostalCode
• Country
• Phone
• Fax

166
Modul Visual Basic 6
[email protected]
• Homepage

9. Dengan menggunakan perintah SQL dan operasi INNER JOIN antara tabel Products,
Categories, Suppliers, tampilkan kolom ProductName, CategoryName, SupplierName,
dan Unit Price.

SELECT Products.ProductName, Categories.CategoryName,


Suppliers.CompanyName, Products.UnitPrice FROM ( Products INNER JOIN
Categories ON Products.CategoryId = Categories.CategoryId) INNER JOIN Suppliers
ON Products.SupplierId = Suppliers.SupplierId;

10. Buatlah suatu daftar negara dimana perusahaan memiliki hubungan, baik dari tabel
Customers maupun tabel Suppliers, dengan operasi UNION.

SELECT DISTINCT Country From Customers UNION SELECT DISTINCT Country


From Suppliers;

11. Bukalah tabel Orders dan perhatikan kolom-kolom didalamnya.

• OrderID
• CustomerID
• EmployeeID
• OrderDate
• RequiredDate
• ShippedDate
• ShipVia
• Freight
• ShipName
• ShipAddress
• ShipCity
• ShipRegion
• ShipPostalCode
• ShipCountry

12. Buatlah suatu daftar jumlah Order Per CustomerID untuk Jan, Feb, ..., Dec.

TRANSFORM Count(*)
SELECT Orders.CustomerId
FROM Orders
GROUP BY Orders.CustomerId
PIVOT Format([OrderDate],"mmm") In
("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

Bagaimana kalau untuk data Order tahun 1994 saja.

TRANSFORM Count(*)
SELECT Orders.CustomerId
FROM Orders WHERE Year([OrderDate]) = 1994
GROUP BY Orders.CustomerId
PIVOT Format([OrderDate],"mmm") In
("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

167
Modul Visual Basic 6
[email protected]
Latihan 3

Judul : Latihan

1. Dengan menggunakan Visual Data Manager aktifkan Biblio.Mdb

2. Gunakan perintah SQL untuk :

• Menampilkan kolom PubId, Name, dan Company Name dari tabel Publishers
• Batasi data yang dari City New York
• Urutkan data berdasarkan Name Descending
• Hitung jumlah publishers dari City Carmel
• Hitung jumlah pelanggan dari masing-masing City
• Buatlah Daftar City yang mana jumlah publishernya diatas 3
• Buatlah Daftar City publishers (tidak boleh double)
• Buatlah Daftar 10 besar City berdasarkan jumlah publishers

3. Tampilan recordset dengan kolom ISBN, Author dari tabel TitleAuthor dan Authors.

4. Tampilan recordset dengan kolom Title, Author, Name, dari tabel Titles, Title Author,
Authors, dan Publishers (4 Table)

SELECT Titles.Title, Authors.Author, Publishers.Name


FROM (Titles INNER JOIN Publishers ON Titles.PubID = Publishers.PubID) INNER
JOIN (Authors INNER JOIN [Title Author] ON Authors.Au_ID = [Title Author].Au_ID) ON
Titles.ISBN = [Title Author].ISBN;

Memahami ADODC melalui Data Form Wizard


Data Form wizard adalah salah satu fasilitas Add In yang disediakan oleh Visual Basic
untuk membuat form isian data lokal maupun remote.

Pada Modul ini kita akan memanfaatkan fasilitas ini untuk mempelajari kontrol ADODC
yang diperkenalkan sejak Visual Basic 6.0.

Mengaktifkan fasilitas Data Form Wizard

Anda dapat mengaktifkan fasilitas ini melalui menu Add Ins, Add Ins Manager, dan
kemudian akan muncul dialog box Add-In Manager, dan lakukan double klik pada VB 6
Data Form Wizard.

168
Modul Visual Basic 6
[email protected]

Menjalankan Data Form Wizard


Untuk mengaktifkan data form wizard anda dapat memilihnya langsung pada menu
Add-Ins, sehingga ditampilkan dialog box Data Form Wizard.

Lakukan klik Next, dan akan muncul dialog box berikutnya yaitu memilih jenis database
yang akan digunakan, dalam hal ini Access (data lokal), atau Remote (SQL server)

169
Modul Visual Basic 6
[email protected]

Misalnya kita memilih Access, dan akan muncul dialog box berikut ini :

Tentukan nama database yang akan digunakan, misalnya C:\Program Files\Microsoft


Visual Studio\VB98\Nwind.mdb, dan lakukan klik pada tombol Next.

170
Modul Visual Basic 6
[email protected]
Dalam hal ini kita akan menggunakan ADO Data Control.

Tentukan Record Source yang akan digunakan, dalam hal ini kita menggunakan tabel
Customers, kemudian tentukan field-field yang akan digunakan, dan kolom yang akan
di Sort, dan klik pada Next.

Selanjutnya tentukan tombol-tombol yang ingin ditambahkan pada form, dan klik pada
next.

171
Modul Visual Basic 6
[email protected]

Akhirnya akan menghasilkan suatu form frmCustomer.

Untuk menjalankan frmCustomer, anda dapat melakukan pengaturan pada Project,


Project Properties, dan lakukan pemilihan frmCustomer pada bagian StartUp Object.

Mempelajari kontrol ADODC hasil Form Wizard.


Lakukan klik kanan pada kontrol ADODC, dan pilih ADODC Properties

172
Modul Visual Basic 6
[email protected]

Hal yang paling paling penting dari suatu ADODC adalah Connection String.
Connection String ini dapat dibuat dengan command Build, atupun dengan mengetik
sendiri.

PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=C:\Program Files\Microsoft Visual


Studio\VB98\Nwind.mdb;

Misalnya dengan menggunakan command Build.

Dalam hal ini PROVIDER yang kita gunakan adalah Microsoft.Jet.OLEDB.3.51. Jenis
provider ini sangat tergantung kepada jenis database yang kita gunakan, dalam hal ini
adalah *.mdb.

Catatan :
173
Modul Visual Basic 6
[email protected]
Microsoft.Jet.OLEDB.3.51, hanya mampu membuka sampai database Access 97, untuk
membuka data Access 2000, anda perlu mengunakan PROVIDER
Microsoft.Jet.OLEDB.4.0.

Selanjutkan adalah menunjukkan database yang kita gunakan dalam connection.

Klik pada Test Connection untuk mencoba keberhasilan koneksi dengan sumber data.

Halaman Authentication dapat digunakan untuk login ke sistem database yang


membutuhkan authentication User Name dan Password, misalnya pada database SQL
Server.

174
Modul Visual Basic 6
[email protected]

Halaman RecordSource digunakan untuk menentukan sumber data dari Table, Query
ataupun suatu SQL Statement. Dalam hal ini menggunakan SQL Statement :

select
CustomerID,CompanyName,Address,City,ContactName,ContactTitle,Country,Fax,Phon
e,PostalCode,Region from Customers

Bound TextBox pada ADODC


Hasil dari Data Form Wizard menggunakan metode bound kontrol terhadap kontrol
ADODC. Untuk mempelajari cara bound kontorl tersebut lakukan klik pada txtFields(0),
dan pelajari properti-propertinya :

Property Value
DataSource DatPrimaryRs
DataField CustomerId

Dalam hal ini Property DataSource berisi DatPrimaryRs (nama dari kontrol ADODC),
dan properti DataField berisi CustomerId (nama dari field yang di bound)

Periksa juga txtFields(1), dst.

Mempelajari Koding yang dihasilkan


Event datPrimaryRS_Error, merupakan event yang akan dibangkitkan ketika terjadi
kesalahan pada proses data oleh ADODC.

Private Sub datPrimaryRS_Error(ByVal ErrorNumber As Long, Description As String, ByVal Scode As


Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, fCancelDisplay As
Boolean)
'Ini merupakan tempat anda menempatkan kode error handling
MsgBox "Data error event hit err:" & Description
End Sub

Event datPrimaryRS_MoveComplete, merupakan event yang akan dibangkitkan


ketika terjadi perubahan posisi record.
175
Modul Visual Basic 6
[email protected]
Private Sub datPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal
pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As
ADODB.Recordset)
'Dalam hal ini akan menampilkan posisi record pada data kontrol
datPrimaryRS.Caption = "Record: " & CStr(datPrimaryRS.Recordset.AbsolutePosition)
End Sub

Event datPrimaryRS_WillChangeRecord, merupakan event yang akan dibangkitkan


ketika akan terjadi perubahan pada record, yang dapat dipelajari dari parameter
adReason, dan perubahan tersebut dapat dibatalkan dengan parameter adStatus.

Private Sub datPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal


cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
'Merupakan tempat anda menempatkan kode validasi, ubah isi bCancel menjadi False untuk
membatalkan perubahan
'Event ini akan dibangkitkan ketika terjadi hal seperti
Dim bCancel As Boolean

Select Case adReason


Case adRsnAddNew
Case adRsnClose
Case adRsnDelete
Case adRsnFirstChange
Case adRsnMove
Case adRsnRequery
Case adRsnResynch
Case adRsnUndoAddNew
Case adRsnUndoDelete
Case adRsnUndoUpdate
Case adRsnUpdate
End Select

If bCancel Then adStatus = adStatusCancel


End Sub

Event cmdAdd_Click, merupakan event untuk command button cmdAdd.

Private Sub cmdAdd_Click()


On Error GoTo AddErr
datPrimaryRS.Recordset.AddNew

Exit Sub
AddErr:
MsgBox Err.Description
End Sub

Event cmdDelete_Click, merupakan event untuk command button cmdDelete

Private Sub cmdDelete_Click()


On Error GoTo DeleteErr
With datPrimaryRS.Recordset
.Delete
.MoveNext
If .EOF Then .MoveLast
End With
Exit Sub
DeleteErr:
MsgBox Err.Description
End Sub

Event cmdRefresh_Click, merupakan event untuk command button cmdRefresh


176
Modul Visual Basic 6
[email protected]
Private Sub cmdRefresh_Click()
'Bagian ini dibutuhkan pada lingkungan multiuser
On Error GoTo RefreshErr
datPrimaryRS.Refresh
Exit Sub
RefreshErr:
MsgBox Err.Description
End Sub

Event cmdUpdate_Click, merupakan event untuk command button cmdUpdate

Private Sub cmdUpdate_Click()


On Error GoTo UpdateErr

datPrimaryRS.Recordset.UpdateBatch adAffectAll
Exit Sub
UpdateErr:
MsgBox Err.Description
End Sub

Event cmdClose_Click, merupakan event untuk command button cmdClose

Private Sub cmdClose_Click()


Unload Me
End Sub

Event Form_Unload, merupakan event untuk Form_Unload

Private Sub Form_Unload(Cancel As Integer)


Screen.MousePointer = vbDefault
End Sub

Memahami koding ADO melalui Data Form Wizard


Pada data form wizard memberikan pilihan kepada anda jenis data binding yang akan
digunakan, apakah dengan ADODC atau ADO Code. Pada bagian ini kita akan
mempelajari koding ADO.

177
Modul Visual Basic 6
[email protected]
Selanjutnya langkah wizard adalah sama dengan bagian sebelumnya.

Sesuatu hal yang harus anda sadari adalah bahwa record navigator yang ada bukan
merupakan suatu ADODC, melainkan dibuat dengan menggunakan Command button
dan Label.

Reference ke Microsoft ActiveX Data Objects 2.0


Library
Sesaat setelah frmCustomer berhasil di generate, maka pada project anda otomatis
direference ke Microsoft ActiveX Data Objects 2.0 Library.

Bound TextBox pada ADO


Untuk mempelajari cara bound kontrol ke ADO, lakukan klik pada txtFields(0), dan
pelajari properti-propertinya :

178
Modul Visual Basic 6
[email protected]
Property Value
DataSource kosong (tidak diisi)
DataField CustomerId

Dalam hal ini, properti DataSource tidak disi (binding akan dilakukan secara koding
pada event Form_Load), sedangkan DataField berisi nama field yang akan di bound.

Mempelajari Koding yang dihasilkan


Pada bagian General Declaration, pada bagian ini dideklarasikan variabel-variabel
yang digunakan pada form, salah satu variabel yang sangat penting adalah
adoPrimaryRS yang dideklarasikan sebagai Recordset (dalam hal ini adalah Recordset
dari ADO, karena project kita reference ke Microsoft ActiveX Data Objects 2.0 Library.

Sesuatu hal yang baru disini adalah deklarasi variabel object adoPrimaryRS diawali
dengan WithEvents. Pada VB 6.0 kita dapat mendeklarasi variabel object beserta
dengan eventnya untuk object yang memiliki event (dalam hal ini ADO memiliki
beberapa event yang dapat dikoding). Hal ini tidak ditemui pada VB 5.0 maupun DAO.

Dim WithEvents adoPrimaryRS As Recordset


Attribute adoPrimaryRS.VB_VarHelpID = -1
Dim mbChangedByCode As Boolean
Dim mvBookMark As Variant
Dim mbEditFlag As Boolean
Dim mbAddNewFlag As Boolean
Dim mbDataChanged As Boolean

Event Form_Load, pada bagian ini akan membuka tabel Customer (dengan SQL)
sebagai recordset yang akan digunakan pada form. Pada ADO, pembukaan recordset
harus didahului dengan membuka koneksi ke data provider dengan object Connection
dan Connection String.

Perhatikan Connection String yang digunakan :

"PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=C:\Program Files\Microsoft


Visual Studio\VB98\Nwind.mdb;"

Selanjutnya adalah melakukan bind masing-masing textbox ke data provider


adoPrimaryRs dengan looping For Each, dan menggunakan properti DataSource.

For Each oText In Me.txtFields


Set oText.DataSource = adoPrimaryRS
Next

Private Sub Form_Load()


Dim db As Connection 'Mempersiapkan variabel object Connection
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=C:\Program Files\Microsoft Visual
Studio\VB98\Nwind.mdb;"

Set adoPrimaryRS = New Recordset

179
Modul Visual Basic 6
[email protected]
adoPrimaryRS.Open "select
Address,City,CompanyName,ContactName,ContactTitle,Country,CustomerID,Fax,Phone,PostalCode,Re
gion from Customers", db, adOpenStatic, adLockOptimistic

Dim oText As TextBox


'Bind masing-masing textbox ke data provider
For Each oText In Me.txtFields
Set oText.DataSource = adoPrimaryRS
Next

mbDataChanged = False
End Sub

Pada Event Form Resize, pada bagian ini dilakukan pengaturan ukuran record
navigator yang disesuaikan dengan ukuran form, dalam hal ini record navigator dibuat
dengan command button, dan Label.

Private Sub Form_Resize()


On Error Resume Next
lblStatus.Width = Me.Width - 1500
cmdNext.Left = lblStatus.Width + 700
cmdLast.Left = cmdNext.Left + 340
End Sub

Pada Event Form KeyDown, pada bagian ini akan dibangkitkan event-event yang
bersesuaian dengan penekanan tombol oleh pemakai pada form aktif.

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)


If mbEditFlag Or mbAddNewFlag Then Exit Sub

Select Case KeyCode


Case vbKeyEscape
cmdClose_Click
Case vbKeyEnd
cmdLast_Click
Case vbKeyHome
cmdFirst_Click
Case vbKeyUp, vbKeyPageUp
If Shift = vbCtrlMask Then
cmdFirst_Click
Else
cmdPrevious_Click
End If
Case vbKeyDown, vbKeyPageDown
If Shift = vbCtrlMask Then
cmdLast_Click
Else
cmdNext_Click
End If
End Select
End Sub

Pada Event adoPrimaryRS_MoveComplete, event ini akan dibangkitkan setelah


perubahan posisi record. Event ini bekerja pada object adoPrimaryRS yang
dideklarasikan dengan WithEvents.

Private Sub adoPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal


pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As
ADODB.Recordset)
'This will display the current record position for this recordset

180
Modul Visual Basic 6
[email protected]
lblStatus.Caption = "Record: " & CStr(adoPrimaryRS.AbsolutePosition)
End Sub

Pada Event adoPrimaryRS_WillChangeRecord, event ini akan dibangkitkan sesaat


terjadi perubahan isi record.

Private Sub adoPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal


cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
'This is where you put validation code
'This event gets called when the following actions occur
Dim bCancel As Boolean

Select Case adReason


Case adRsnAddNew
Case adRsnClose
Case adRsnDelete
Case adRsnFirstChange
Case adRsnMove
Case adRsnRequery
Case adRsnResynch
Case adRsnUndoAddNew
Case adRsnUndoDelete
Case adRsnUndoUpdate
Case adRsnUpdate
End Select

If bCancel Then adStatus = adStatusCancel


End Sub

Event cmdAdd_Click, merupakan event untuk command button cmdAdd.

Private Sub cmdAdd_Click()


On Error GoTo AddErr
With adoPrimaryRS
If Not (.BOF And .EOF) Then
mvBookMark = .Bookmark
End If
.AddNew
lblStatus.Caption = "Add record"
mbAddNewFlag = True
SetButtons False
End With

Exit Sub
AddErr:
MsgBox Err.Description
End Sub

Event cmdDelete_Click, merupakan event untuk command button cmdDelete

Private Sub cmdDelete_Click()


On Error GoTo DeleteErr
With adoPrimaryRS
.Delete
.MoveNext
If .EOF Then .MoveLast
End With
Exit Sub
DeleteErr:
MsgBox Err.Description
End Sub

181
Modul Visual Basic 6
[email protected]
Event cmdRefresh_Click, merupakan event untuk command button cmdRefresh

Private Sub cmdRefresh_Click()


'This is only needed for multi user apps
On Error GoTo RefreshErr
adoPrimaryRS.Requery
Exit Sub
RefreshErr:
MsgBox Err.Description
End Sub

Event cmdEdit_Click, merupakan event untuk command button cmdEdit

Private Sub cmdEdit_Click()


On Error GoTo EditErr

lblStatus.Caption = "Edit record"


mbEditFlag = True
SetButtons False
Exit Sub

EditErr:
MsgBox Err.Description
End Sub
Private Sub cmdCancel_Click()
On Error Resume Next

SetButtons True
mbEditFlag = False
mbAddNewFlag = False
adoPrimaryRS.CancelUpdate
If mvBookMark > 0 Then
adoPrimaryRS.Bookmark = mvBookMark
Else
adoPrimaryRS.MoveFirst
End If
mbDataChanged = False

End Sub

Event cmdUpdate_Click, merupakan event untuk command button cmdUpdate

Private Sub cmdUpdate_Click()


On Error GoTo UpdateErr

adoPrimaryRS.UpdateBatch adAffectAll

If mbAddNewFlag Then
adoPrimaryRS.MoveLast 'move to the new record
End If

mbEditFlag = False
mbAddNewFlag = False
SetButtons True
mbDataChanged = False

Exit Sub
UpdateErr:
MsgBox Err.Description
End Sub

182
Modul Visual Basic 6
[email protected]
Event cmdClose_Click, merupakan event untuk command button cmdClose

Private Sub cmdClose_Click()


Unload Me
End Sub

Event cmdFirst_Click, merupakan event untuk command button cmdFirst

Private Sub cmdFirst_Click()


On Error GoTo GoFirstError

adoPrimaryRS.MoveFirst
mbDataChanged = False

Exit Sub

GoFirstError:
MsgBox Err.Description
End Sub

Event cmdLast_Click, merupakan event untuk command button cmdLast

Private Sub cmdLast_Click()


On Error GoTo GoLastError

adoPrimaryRS.MoveLast
mbDataChanged = False

Exit Sub

GoLastError:
MsgBox Err.Description
End Sub

Event cmdNext_Click, merupakan event untuk command button cmdNext

Private Sub cmdNext_Click()


On Error GoTo GoNextError

If Not adoPrimaryRS.EOF Then adoPrimaryRS.MoveNext


If adoPrimaryRS.EOF And adoPrimaryRS.RecordCount > 0 Then
Beep
'moved off the end so go back
adoPrimaryRS.MoveLast
End If
'show the current record
mbDataChanged = False

Exit Sub
GoNextError:
MsgBox Err.Description
End Sub

Event cmdPrevious_Click, merupakan event untuk command button cmdPrevious

Private Sub cmdPrevious_Click()


On Error GoTo GoPrevError

If Not adoPrimaryRS.BOF Then adoPrimaryRS.MovePrevious


If adoPrimaryRS.BOF And adoPrimaryRS.RecordCount > 0 Then

183
Modul Visual Basic 6
[email protected]
Beep
'moved off the end so go back
adoPrimaryRS.MoveFirst
End If
'show the current record
mbDataChanged = False

Exit Sub

GoPrevError:
MsgBox Err.Description
End Sub

Private Sub SetButtons(bVal As Boolean)


cmdAdd.Visible = bVal
cmdEdit.Visible = bVal
cmdUpdate.Visible = Not bVal
cmdCancel.Visible = Not bVal
cmdDelete.Visible = bVal
cmdClose.Visible = bVal
cmdRefresh.Visible = bVal
cmdNext.Enabled = bVal
cmdFirst.Enabled = bVal
cmdLast.Enabled = bVal
cmdPrevious.Enabled = bVal
End Sub

Event Form_Unload, merupakan event yang akan dibangkitkan ketika form di buang
dari memori.

Private Sub Form_Unload(Cancel As Integer)


Screen.MousePointer = vbDefault
End Sub

Database dan Data Kontrol


Mulai modul ini kita akan bekerja dengan database, sebagai dasar dari proses belajar,
anda harus memahami dasar dari database dan model database relational.

Suatu database merupakan koleksi dari informasi yang berhubungan dengan subjek
atau fungsi tertentu, seperti menangani nilai-nilai ujian mahasiswa atau menangani
suatu daftar koleksi musik. Jika database anda tidak tersimpan dalam komputer, maka
anda harus menangani informasi tersebut dari berbagai sumber dan mengkoordinir
serta mengorganisasinya sendiri.

Dengan mengunakan suatu Sistem Manajemen Database (DBMS) anda dapat


menempatkan database anda dalam suatu file, dan mengorganisasikannya menjadi
tabel-tabel, dan mengkoordinir data tersebut menjadi laporan dengan berbagai fasilitas
seperti Form, Query, Report.

Konsep Database Relational


Model relational merupakan standar untuk rancangan database, dimana database
disimpan dan ditampilkan sebagai suatu koleksi dari tabel-tabel.

184
Modul Visual Basic 6
[email protected]

Suatu struktur didefinisikan dengan membuat relasi antar tabel, kaitan data antar tabel
ini di dalam database merupakan model dari relationship.

Adapun model database relational menawarkan keuntungan sebagai berikut :

• Mengorganisasikan data didalam suatu koleksi tabel-tabel membuat rancangan


menjadi mudah dipahami.
• Menyediakan suatu bahasa yang relatif lengkap untuk mendefinisikan data,
mengambil dan mengupdate.
• Menyediakan aturan integritas yang mana mendefinisikan suatu keadaan yang
konsisten untuk meningkatkan reliabilitas data.

Suatu relational database manajemen sistem (RDBMS) adalah software yang


memungkinkan anda untuk menampilkan data anda pada suatu model relational.
Database-database Relational mendukung suatu bahasa standar yang dikenal sebagai
Structured Query Language (SQL). SQL telah berkembang menjadi suatu bahasa yang
comprehensive untuk pengendalian dan interaksi dengan suatu sistem manajemen
database (DBMS). SQL adalah suatu standar yang disetujui oleh American National
Standards Institute (ANSI). Database Northwind (Nwind.mdb) adalah suatu contoh
database relational yang ada pada Microsoft Access dan Visual Basic.

185
Modul Visual Basic 6
[email protected]
Tabel

Model database relational menampilkan data sebagai suatu koleksi dari tabel-tabel.
Suatu tabel adalah pengelompokan secara logika dari informasi yang berhubungan.
Sebagai contoh, pada database Northwind memiliki suatu daftar dari tabel-tabel
karyawan, pelanggan, order. Tabel-tabel dibentuk oleh baris-baris dan kolom-kolom.
Baris-baris sering disebut sebagai record-record dan kolom-kolom disebut sebagai
field-field.

Record

Suatu record mengandung informasi dari suatu isian tunggal dalam suatu tabel.
Sebagai contoh, sebuah record dalam suatu tabel Karyawan akan mengandung
informasi dari karyawan-karyawan.

Field

Suatu record dibentuk oleh banyak field. Setiap field dalam suatu record mengandung
suatu potongan tunggal dari informasi tentang record. Sebagai contoh, suatu record
Karyawan memiliki No Induk Karyawan, Nama, Marga dan yang lainnya.

Key

Untuk secara unik mengenali suatu baris (record), setiap tabel harus memiliki suatu
primary key. Primary key adalah suatu field, atau konbinasi dari field-field, yang mana
nilainya bersifat unik untuk tiap baris atau record dalam tabel. Sebagai contoh, field
Nomor Induk Karyawan adalah primary key untuk tabel Karyawan. Tidak ada dua
karyawan yang memiliki Nomor Induk yang sama.

Suatu tabel dapat mengandung field yang merupakan foreign key. Suatu foreign key
"menunjuk pada" suatu field primary key pada tabel yang berhubungan. Sebagai
contoh, pada database Northwind, Tabel Pesanan mengandung suatu field Nomor
Pelanggan. Setiap Nomor Pelanggan pada tabel Order menunjukkan Pelanggan yang
melakukan Pesanan tersebut.

Hubungan antara tabel Pesanan dan Pelangan adalah one-to-many relationship—yang


mana adalah, setiap pelanggan dapat melakukan lebih dari satu pesanan.
186
Modul Visual Basic 6
[email protected]
Index

Untuk mempercepat akses, banyak database menggunakan index. Data tabel yang
terindex berurut akan lebih cepat pencariaannya dibandingkan dengan tabel. Setiap isi
index menunjuk ke posisi ditabelnya.

Membuat Database dengan Visual Data Manager


Pada Visual Basic, anda dapat membuat database dengan menggunakan Visual Data
Manager yang dapat diaktifkan dari menu Add Ins, Visual Data Manager.

Membuat Database anda yang pertama

1. Dari menu File, pilih New, Microsoft Access, Version 7.0


2. Tentukan lokasi penyimpanan dan nama database anda, misalnya Indoprog.mdb

Selanjutnya akan ditampilkan dua jendela yaitu :

1. Database Window, menunjukan koleksi dari database anda


2. SQL Statement, tempat anda mengetikkan bahasa SQL

187
Modul Visual Basic 6
[email protected]
Membuat Tabel anda yang pertama

1. Klik kanan pada "Properties" yang berada pada Database Window


2. Pilih New Table, sehingga akan muncul kotak dialog Table Structure

3. Pada Table Name ketikkan nama tabel yang ingin anda buat, misalnya Forum
4. Klik pada Add Field untuk mengetikkan field-field tabel anda, dan akan muncul
kotak dialog Add Field, Name ketikkan nama field anda, pilihlah Type data yang
bersesuaian dan ukuran dari field tersebut

Anda dapat menentukan apakah field tersebut adalah AutoIncrField (untuk type Long),
AllowZeroLength (untuk type Text), Required.

Klik pada Ok, dan lakukan hal yang sama untuk field berikutnya, jika telah selesai klik
pada Close.

188
Modul Visual Basic 6
[email protected]

5. Langkah selanjutnya adalah membuat Primary Key untuk tabel anda dengan
melakukan klik pada tombol Add Index. Pada Name ketikkan nama Index, dan
double klik pada field yang ingin di Index pada kotak Available Fields.

Anda dapat menentukan option Primary, Unique dan IgnoreNulls, klik OK jika telah
selesai, dan akhirnya Close.

189
Modul Visual Basic 6
[email protected]

6. Akhirnya klik pada Build The Table.

Mengetik data pada Visual Data Manager

1. Pilih jenis Table type recordset


2. Pada Database Windows klik kanan pada tabel yang ingin anda ketik datanya.
Dalam hal ini adalah tabel Forum, dan pilih Open, klik Add dan mulai
mengetikkan data anda, dan akhirnya Update.

Membuat Relasi antar database


Sesuai dengan konsep database relational, tentu saja tabel-tabel didalam suatu
database memiliki link berdasarkan field tertentu yang bertindak sebagai foreign key
dan primary key.

Pada database yang telah kita buat pada Latihan 1, adapun relasi antar tabel tersebut
adalah sebagai berikut :

Tabel Aktifitas berisi data aktifitas peserta dimana seorang Peserta dapat mengikuti
lebih dari satu forum Diskusi, dan sebuah forum diskusi dapat diikuti oleh lebih dari satu
peserta, dan status Peserta pada masing-masing forum diskusi dapat berbeda-beda.

Tabel Aktifitas

Nama Field (Foreign key) Foreign Tabel Foreign Field


Email Peserta Email
ForumID Forum ForumID
Status Status Status

190
Modul Visual Basic 6
[email protected]
Untuk membuat Relasi antar tabel pada Visual Data Manager anda dapat
menggunakan Bahasa SQL yang diketikan pada jendela SQL Language dan kemudian
di Execute.

Adapun DDL (Data Definition Language) SQL untuk membuat Relasi antar tabel
adalah sebagai berikut :

ALTER TABLE table ADD CONSTRAINT name


FOREIGN KEY (ref1[, ref2 [, ...]]) REFERENCES foreigntable [(foreignfield1 [,
foreignfield2 [, ...]])]

dimana :

table Nama tabel


name Nama Constraint yang akan dibuat
ref Nama field yang akan dibuat relasi
foreigntable Nama foreign table
foreignfield Nama foreign field

Contoh :

ALTER TABLE Aktifitas ADD CONSTRAINT AktifitasEmail FOREIGN KEY (Email) REFERENCES
Peserta (Email);
ALTER TABLE Aktifitas ADD CONSTRAINT AktifitasForumID FOREIGN KEY (ForumId) REFERENCES
Forum (ForumId);
ALTER TABLE Aktifitas ADD CONSTRAINT AktifitasStatus FOREIGN KEY (Status) REFERENCES
Satus (Status);

Jika dibuka dengan Relationship pada Microsoft Access maka hasil perintah SQL diatas
akan membuat relasi antar tabel sebagai berikut :

Mengenal Data kontrol


191
Modul Visual Basic 6
[email protected]
DBList

Data kontrol merupakan kontrol standar yang disediakan pada Visual Basic untuk
digunakan untuk membuat aplikasi database sederhana. Data kontrol merupakan suatu
lapisan yang menghubungkan data dengan user interface.

Properti pada Data kontrol


Properti Keterangan
Menentukan pemerataan kontrol pada Form (0-None, 1- Top, 2 - Bottom, 3 -
Align
Left, 4 - Right)
Menentukan metoda yang akan otomatis diaktifkan ketika posisi pointer
BOFAction
mencapai BOF (1 - MoveFirst, 0 - BOF)
Caption Menentukan tulisan pada data kontrol
Menentukan jenis software file database (Access, dBaseIII, dBaseIV, dll)
Access
sebagai sumber data
Menentukan path dan nama database file yang akan digunakan sebagai
DatabaseName
sumber data
Menentukan jenis kursor yang digunakan (0 - DefaultCursor, 1 - ODBCCursor,
DefaultCursorType
2 - ServerSideCursor)
DefaultType Menentukan jenis data yang digunakan (2 - UseJext, 1 - UseODBC)
Menentukan metoda yang akan otomatis diaktifkan ketika posisi pointer
EOFAction
mencapai BOF (1 - MoveLast, 0 - EOF,2-AddNew)
Menentukan modus pengaktifan database secara Share atau Exclusive
Exclusive
(False, True)
ReadOnly Menentukan apakah recordset adalah readonly atau tidak (False, True)
Menentukan jenis recordset yang akan digunakan (1-Dynaset, 0-Table, 2-
RecordsetType
Snapshot)
Menentukan sumber data untuk recordset, dapat berupa nama tabel maupun
RecordSource
bahasa SQL (khusus untuk Dynaset dan Snapshot)

Memahami Jenis RecordSet


Visual Basic menerima dan menampilkan record dari database dengan menggunakan
objek Recordset. Recordset menampilkan record dari suatu Tabel atau record yang
merupakan hasil Query (SQL). Ada tiga jenis recordset yang dapat ditentukan pada
properti RecordSetType pada data control, adapun ketiga jenis recordset tersebut
adalah sebagai berikut :

Jenis
Keterangan
Recordset
Table Suatu himpunan dari record yang diambil dari suatu tabel tunggal database. Anda dapat
menambah, mengubah, atau menghapus record pada jenis recordset ini.
Dynaset Suatu himpunan dari record secara dinamis yang di ambil dari suatu tabel tunggal maupun
hasil Query (SQL) dari satu atau lebih tabel. Anda dapat menambah, mengurangi, atau
menghapus record pada jenis recordset ini, dan perubahan akan mempengaruhi tabel yang
bersangkutan.
Snapshot Suatu himpunan dari record yang merupakan duplikasi secara statis. Anda dapat
menggunakan recordset jenis ini untuk mencari data, dan membuat laporan. Recorset
Snapshot dapat mengandung field dari satu atau lebih tabel yang tidak dapat di update.

Anda dapat memilih jenis objek Recordset yang ingin anda gunakan pada Property
(RecordsetType), dan nilai defaultnya adalah vbDynasetType.
192
Modul Visual Basic 6
[email protected]
Catatan :

Pada Dynaset dan Snapshot, recordset disimpan pada memori lokal, jika aplikasi anda
tidak menggambil data lebih dari satu tabel, ataupun sumber data non-ODBC, maka
Recordset jenis Table merupakan pilihan yang baik dari segi kecepatan dan efisiensi
pemakaian memori.

Metoda-metoda pada Data Kontrol


Sebagaimana objek-objek standar lainnya, objek Data kontrol menyediakan berbagai
metoda yang dapat anda gunakan.

Bergerak dalam RecordSet

Metoda Fungsi
MoveFirst Memindahkan keaktifan pointer ke awal recordset
MoveLast Memindahkan keaktifan pointer ke akhir recordset
MovePrevious Memindahkan keaktifan pointer ke record sebelumnya
MoveNext Memindahkan keaktifan pointer ke record berikutnya

Contoh :

Data1.Recordset.MoveFirst

Mencari suatu record tertentu

Untuk RecordSet jenis Dynaset dan SnapShot


Metoda Fungsi
FindFirst kriteria Mencari record pertama yang memenuhi kriteria
FindLast kriteria Mencari record terakhir yang memenuhi kriteria
FindNext kriteria Mencari record berikutnya yang memenuhi kriteria
FindPrevious Kriteria Mencari record sebelumnya yang memenuhi kriteria

Contoh :

Data1.Recordset.FindFirst "Email = '[email protected]'"

Untuk RecordSet jenis Table

Pada recordset jenis table anda dapat menggunakan metoda Seek, tetapi sebelumnya
anda perlu menentukan index yang digunakan dengan properti index

Data1.RecordSet.Index = NamaIndex

Data1.RecordSet.Seek perbandingan, key1, key2, ...

Perbandingan Keterangan
"=" Sama dengan
">=" Lebih besar atau sama

193
Modul Visual Basic 6
[email protected]
">" Lebih besar
"<=" Lebih kecil atau sama
"<" Lebih kecil

Contoh :

Data1.Recordset.Index = "P_Key"
Data1.Recordset.Seek "=","[email protected]"

Memeriksa hasil pencarian record

Anda dapat menggunakan properti NoMatch untuk memeriksa hasil pencarian dengan
metoda Find maupun metoda Seek.

Contoh

Data1.Recordset.FindFirst "Email = '[email protected]'"


If Data1.Recordset.NoMatch Then
MsgBox "Peserta belum terdaftar !"
Else
MsgBox "Peserta telah terdaftar !"
End If

atau

Data1.Recordset.Index = "P_Key"
Data1.Recordset.Seek "=","[email protected]"
If Data1.Recordset.NoMatch Then
MsgBox "Peserta belum terdaftar !"
Else
MsgBox "Peserta telah terdaftar !"
End If

Menandai posisi record

Untuk menyimpan posisi record anda dapat menggunakan properti bookmark.

Contoh :

Dim MyBookMark As Variant


MyBookMark = Data1.RecordSet.Bookmark
Data1.RecordSet.MoveFirst
Data1.RecordSet.Bookmark = MyBookMark

Mengambil nilai field dari record aktif

Jika suatu kontrol di bound pada data kontrol, maka kontrol tersebut akan menampilkan
nilai field dari record yang sedang aktif.

Untuk mengambil nilai field dari record yang sedang aktif secara koding, anda dapat
menggunakan salah satu cara berikut :

Data1.Recordset.Fields(0).Value ' Mengacu pada nilai pada field pertama


n=0 ' Mengacu tidak langsung dengan suatu field number.
Data1.Recordset.Fields(n) ' Mengacu pada nilai pada field pertama.

194
Modul Visual Basic 6
[email protected]
Data1.Recordset.Fields("FName") ' Mengacu pada FName field.
string$ = "FName" ' Mengacu tidak langsung dengan nama field.
Data1.Recordset.Fields(string$) ' Mengacu pada FName field
Data1.Recordset("FName") ' Mengacu kepada field sebagai collection default.
Data1.Recordset(n) ' Mengacu kepada field sebagai collection default.

Contoh :

Debug.Print Data1.Recordset("Email")

Mengubah nilai field dari record aktif

Jika suatu kontrol di bound pada data kontrol, maka perubahan nilai pada kontrol
tersebut akan mempengaruhi isi field yang bersangkutan ketika posisi record pointer
berpindah, maupun ketika dilakukan proses update dengan metoda UpdateRecord.

Contoh :

Private Sub cmdUpdate_Click()


Data1.UpdateRecord
End Sub

Untuk mengubah nilai field dari record yang sedang aktif secara koding, anda dapat
melakukan langkah sebagai berikut :

1. Posisikan current record ke record yang akan diedit.


2. Tentukan nilai baru kefield yang mau diubah
3. Gunakan method Update atau method Move, Find, atau Seek.

Contoh :

Data1.Recordset.Edit
Data1.Recordset("Email") = "[email protected]"
...
Data1.RecordSet.Update

Menambah record baru ke recordset

Anda dapat menggunakan prilaku properti EOFAction untuk secara otomatis


menambahkan record baru ketika posisi record pointer berada di EOF, anda dapat
segera mengetikkan data pada kontrol-kontrol yang dibound pada kontrol data tersebut,
dan memindahkan keaktifan record pointer untuk proses update, ataupun
menggunakan metoda UpdateRecord.

Secara koding anda dapat melakukan langkah berikut untuk menambahkan record baru
ke recordset :

1. Membuat suatu record baru dengan method AddNew. Current record pointer
disimpan dan berpindah ke record baru.
2. Tentukan nilai baru untuk record baru.
3. Simpan record baru dengan method Update.

Contoh :

195
Modul Visual Basic 6
[email protected]
Data1.Recordset.AddNew
Data1.Recordset("Email") = "[email protected]"
...
Data1.RecordSet.Update

Catatan :

Setelah update, posisi record pointer akan dikembalikan keposisi sebelum record baru
tersebut ditambah. Untuk membuat posisi record berada di record baru tersebut anda
dapat menggunakan bookmark yang diset ke lastmodified.

Contoh :

Data1.Recordset.AddNew
Data1.Recordset("Email") = "[email protected]"
...
Data1.RecordSet.Update
Data1.RecordSet.Bookmark = Data1.Recordset.LastModified

Menghapus record yang sedang aktif

Untuk menghapus seluruh record, posisikan ke record yang akan dihapus, dan
gunakan method Delete. Sesaat setelah record tersebut dihapus, maka record tersebut
menjadi invalid, sehingga anda harus menggunakan MoveNext untuk memindahkan
posisi setelah setiap penghapusan.

Contoh :

Data1.Recordset.Delete
Data1.Recordset.MoveNext
If Data1.Recordset.Eof Then
Data1.Recordset.MoveLast
End If

Melakukan refresh data pada Recordset

Anda dapat menggunakan metoda Refresh untuk menutup dan membentuk ulang isi
Recordset.

Contoh :

Data1.Refresh

Menutup suatu Recordset

Method Close menutup recordset dan membebaskan resource yang dialokasikan


padanya. Usaha untuk melakukan suatu metode atau akses pada element dari
recordset yang telah terhapus akan menghasilkan kesalahan.

Contoh :

Data1.Recordset.Close

Database dan recordset akan secara otomatis tertutup ketika :

196
Modul Visual Basic 6
[email protected]
1. Anda menggunakan method Close terhadap recordset tertentu.
2. Form yang mengandung data control di unload
3. Program menjalankan statement End.

Event Pada Data Kontrol


Event Error

Event Error akan dibangkitkan ketika terjadi kesalahan pada data kontrol yang bukan
disebabkan oleh koding yang menggunakan perintah Visual Basic.

Private Sub Data1_Error(DataErr As Integer, Response As Integer)

End Sub

Anda dapat mendapatkan nomor kesalahan dengan mengevaluasi nilai DataErr, dan
menentukan Response terhadap kesalahan tersebut (vbDataErrContinue,
vbDataErrDisplay) apakah diabaikan atau ditampilkan.

Contoh :

Private Sub Data1_Error(DataErr As Integer, Response As Integer)


Select case DataErr
Case 3163
MsgBox "Panjang data melebihi ukuran field"
Response = vbDataErrContinue
Case Else
Response = vbDataErrDisplay
End Select
End Sub

Event Reposition

Event ini terjadi ketika suatu record menjadi Current position.

Private Sub Data1_Reposition()

End Sub

Contoh berikut akan mengunci semua textbox dari perubahan ketika terjadi event
reposition.

Private Sub Data1_Reposition()


txtForumID.Locked = True
txtKeterangan.Locked = True
txtAlamat.Locked = True
End Sub

Event Validate

197
Modul Visual Basic 6
[email protected]
Event ini terjadi sebelum perubahan dilakukan terhadap yang sedang aktif seperti
metoda update, delete ataupun close.

Private Sub Data1_Validate(Action As Integer, Save As Integer)

End Sub

Anda dapat melakukan evaluasi terhadap Action untuk mendapatkan aksi yang
membangkitkan event Validate tersebut, misalnya vbDataActionAddNew,
vbDataActionBookmark, vbDataActionCancel, dll.

Latihan 1

Judul : Membuat Database dengan Visual Data Manager

Buatlah database Indoprog.Mdb dengan tabel-tabel sebagai berikut :

Tabel Forum

Nama Field Type Size AutoIncrField AllowNulls Require

ForumID Text 25 Tidak Ya

Keterangan Text 50

Alamat Text 50 Tidak Ya

Primary Key (P_Key) dengan field ForumID

Tabel Status

Nama Field Type Size AutoIncrField AllowNulls Require

Status Byte 1 Tidak Ya

Keterangan Text 50

Primary Key (P_Key) dengan field Status

Tabel Peserta

Nama Field Type Size AutoIncrField AllowNulls Require


Email Text 25 Tidak Ya
Nama Text 50
Alamat Text 50
Kota Text50 50
Telepon Text 25
Homepage Text 50
Perusahaan Text 50
TanggalGabung Date 8

Primary Key (P_Key) dengan field Email

198
Modul Visual Basic 6
[email protected]
Tabel Aktifitas

Nama Field Type Size AutoIncrField AllowNulls Require


ID Long 4 Ya
Email Text 50 Tidak Ya
ForumID Text 25 Tidak Ya
Status Byte 50 Tidak Ya

Primary Key (P_Key) dengan field ID

Latihan 2

Judul : Membuat Relasi antar tabel dalam Database dengan SQL

1. Aktifkan Visual Data Manager, dan buatlah relasi antar table di database
Indoprog.mdb

Tabel Aktifitas

Nama Field (Foreign key) Foreign Tabel Foreign Field


Email Peserta Email
ForumID Forum ForumID
Status Status Status

Caranya :

Aktifkan database file Indoprog.mdb

Pada Jendela SQL Statement ketikkan :

ALTER TABLE Aktifitas ADD CONSTRAINT AktifitasEmail FOREIGN KEY (Email) REFERENCES
Peserta (Email);

Untuk membuat relasi antara "tabel Aktifitas" dengan "tabel Peserta" berdasarkan field
"Email".

Klik pada tombol Execute, jika terjadi Error abaikan saja, karena perintah SQL diatas
tidak menghasilkan recordset.

Lanjutkan untuk relasi lainnya.

Latihan 3

Judul : Menggunakan Data Kontrol untuk pengolahan data

1. Tanamkan kontrol-kontrol pada Form anda sehingga membentuk tampilan berikut :

199
Modul Visual Basic 6
[email protected]

Kontrol Properti Nilai


Name frmForumID
Form1
Caption Pengolahan Data Forum Diskusi Indoprog
Label1 Caption ForumID
Label2 Caption Keterangan
Label3 Caption Alamat Forum
Name RsForum
DatabaseName C:\Modul9\Indoprog.mdb
Data1 RecordSource Forum
BOFAction MoveFirst
EOFAction MoveLast
Name txtForumID
Text1 DataSource RsForum
DataField ForumID
Name txtKeterangan
Text2 DataSource RsForum
DataField Keterangan
Name txtAlamat
Text3 DataSource RsForum
DataField Alamat
Name cmdAdd
Command1
Caption &Add
Name cmdEdit
Command2
Caption &Edit
Name cmdDelete
Command3
Caption &Delete
Name cmdUpdate
Command4
Caption &Update
Name cmdCancel
Command5
Caption &Cancel
Name cmdFirst
Command6
Caption &First
Name cmdPrev
Command7
Caption &Previous
Name cmdNext
Command8
Caption &Next
Name cmdLast
Command9
Caption &Last

2. Lakukan koding pada bagian General Declaration :

200
Modul Visual Basic 6
[email protected]
'Deklarasi Enumerated type untuk aksi oleh pemakai
Private Enum Aksi
flNone = 0
flAdd = 1 'Tambah data
flEdit = 2 'Perbaiki data
End Enum

'Deklarasi Variabel Flag adalah Aksi


Dim Flag As Aksi
Private Sub Kunci(x)
txtForumID.Locked = x 'Kunci textbox dari
txtKeterangan.Locked = x 'perubahan oleh pemakai
txtAlamat.Locked = x
End Sub
Private Sub AturTombol(Add, Edit, Delete, Update, Cancel)
cmdAdd.Enabled = Add 'Atur keaktifan
cmdEdit.Enabled = Edit 'tombol
cmdDelete.Enabled = Delete
cmdUpdate.Enabled = Update
cmdCancel.Enabled = Cancel
End Sub

3. Lakukan koding untuk menangani Event pada Data kontrol

Private Sub RsForum_Error(DataErr As Integer, Response As Integer)


Select Case DataErr
Case 3163
MsgBox "Panjang data melebihi ukuran field"
Response = vbDataErrContinue
Case Else
Response = vbDataErrDisplay
End Select
End Sub
Private Sub RsForum_Reposition()
If Flag = flNone Then
If RsForum.Recordset.EOF Then 'Jika tabel kosong
Call AturTombol(True, False, False, False, False)
cmdFirst.Enabled = False
cmdPrev.Enabled = False
cmdNext.Enabled = False
cmdLast.Enabled = False
Else
Call AturTombol(True, True, True, False, False)
cmdFirst.Enabled = True
cmdPrev.Enabled = True
cmdNext.Enabled = True
cmdLast.Enabled = True
End If
Call Kunci(True)
End If
End Sub
Private Sub RsForum_Validate(Action As Integer, Save As Integer)
Select Case Action
Case vbDataActionAddNew
Case vbDataActionMoveFirst
Flag = flNone
Case vbDataActionMovePrevious
Flag = flNone
Case vbDataActionMoveNext
Flag = flNone
Case vbDataActionMoveLast
Flag = flNone
End Select
201
Modul Visual Basic 6
[email protected]
End Sub

3. Lakukan koding untuk masing-masing tombol

Private Sub cmdAdd_Click()


Flag = flAdd 'Tandai sebagai tambah data
RsForum.Recordset.AddNew
Call Kunci(False) 'Buka penguncian
Call AturTombol(False, False, False, True, True)
txtForumID.SetFocus
End Sub
Private Sub cmdEdit_Click()
Flag = flEdit
RsForum.Recordset.Edit
Call Kunci(False)
Call AturTombol(False, False, False, True, True)
End Sub
Private Sub cmdDelete_Click()
On Error GoTo ErrCmdDelete_Click 'Error handle kalau tabel telah kosong
RsForum.Recordset.Delete 'Hapus data, dan record menjadi invalid
RsForum.Recordset.MoveNext 'Pindah kerecord berikutnya
If RsForum.Recordset.EOF Then 'Jika EOF
RsForum.Recordset.MoveLast 'Pindah kerecord terakhir
End If
Exit Sub
ErrCmdDelete_Click:
Select Case Err.Number
Case 3021
MsgBox "Data telah kosong", vbOKOnly + vbInformation, "Warning"
End Select
End Sub
Private Sub cmdUpdate_Click()
On Error GoTo ErrUpdate_click
If txtForumID.Text = "" Then
MsgBox "Forum ID tidak boleh kosong", vbCritical, "Warning"
Exit Sub
End If
If txtKeterangan.Text = "" Then
MsgBox "Keterangan tidak boleh kosong", vbCritical, "Warning"
Exit Sub
End If
If txtAlamat.Text = "" Then
MsgBox "Alamat tidak boleh kosong", vbCritical, "Warning"
Exit Sub
End If
RsForum.Recordset.Update
Flag = flNone
Call Kunci(True)
Call AturTombol(True, True, True, False, False)
RsForum.Recordset.Bookmark = RsForum.Recordset.LastModified
Exit Sub
ErrUpdate_click:
Select Case Err.Number
Case 3022
MsgBox "Telah terjadi duplikasi pada Forum ID", vbOKOnly + vbInformation, "Warning"
Case Else
MsgBox Err.Number & vbCrLf & Err.Description
End Select
End Sub
Private Sub cmdCancel_Click()
RsForum.Recordset.CancelUpdate
Call Kunci(True)
Flag = flNone
202
Modul Visual Basic 6
[email protected]
Call AturTombol(True, True, True, False, False)
End Sub
Private Sub cmdFirst_Click()
RsForum.Recordset.MoveFirst
End Sub
Private Sub cmdPrev_Click()
RsForum.Recordset.MovePrevious
If RsForum.Recordset.BOF Then
RsForum.Recordset.MoveFirst
End If
End Sub
Private Sub cmdNext_Click()
RsForum.Recordset.MoveNext
If RsForum.Recordset.EOF Then
RsForum.Recordset.MoveLast
End If
End Sub
Private Sub cmdLast_Click()
RsForum.Recordset.MoveLast
End Sub

Pengaturan MultiUser pada Data Kontrol


Suatu program MultiUser sangat tergantung pada bagaimana file database sebagai
sumber daya yang digunakan dapat dibuka oleh lebih dari satu pemakai pada saat
yang bersamaan.

Pengaturan modus pembukaan file database pada Data kontrol dapat dilakukan
dengan menentukan nilai dari properti Exclusive menjadi True (Single User) atau False
(Multi User).

Sesuatu hal yang perlu diperhatikan dalam pengaktifan file Database secara Share
(Exclusive False) adalah mekanisme penguncian ketika data di Edit. Mekanisme
penguncian pada Data kontrol dapat menggunakan dua jenis strategi, yaitu :

1. Optimistik Locks, penguncian dilakukan sesaat pada saat metoda .Update


2. Pesimistik Locks, penguncian dilakukan sesaat setelah pemakaian metoda .Edit

Pemakaian strategi penguncian ini dapat ditentukan pada Properti LockEdits dengan
mengubah nilainya menjadi True (Pesimistik Locks) atau False (Optimistik Locks).

203
Modul Visual Basic 6
[email protected]
Contoh :

Private Sub Form_Load()


RsForum.Refresh
RsForum.Recordset.LockEdits = True 'Menggunakan Strategi Pesimistik Locks
End Sub

Catatan :
Penguncian dilakukan oleh Visual Basic secara per Page (Halaman) dimana terdiri dari
2 Kilobyte Page dimana record tersebut berada. Pada saat suatu Page sedang dikunci,
maka usaha penguncian oleh pemakai lain terhadap data lain yang berada pada Page
yang sama akan gagal.

Perhatikan kembali potongan program berikut yang diambil dari Latihan 3 Modul 9,
dimana mekanisme masing-masing Locks dapat dijelaskan sebagai berikut :

Private Sub cmdEdit_Click()


Flag = flEdit
RsForum.Recordset.Edit ' Penguncian terjadi disini pada Pesimistik
Locks
Call Kunci(False)
Call AturTombol(False, False, False, True, True)
End Sub
Private Sub cmdUpdate_Click()
On Error GoTo ErrUpdate_click
If txtForumID.Text = "" Then
MsgBox "Forum ID tidak boleh kosong", vbCritical, "Warning"
Exit Sub
End If
If txtKeterangan.Text = "" Then
MsgBox "Keterangan tidak boleh kosong", vbCritical, "Warning"
Exit Sub
End If
If txtAlamat.Text = "" Then
MsgBox "Alamat tidak boleh kosong", vbCritical, "Warning"
Exit Sub
End If
RsForum.Recordset.Update ' Penguncian terjadi disini pada Optimistik Locks
Flag = flNone
Call Kunci(True)
Call AturTombol(True, True, True, False, False)
RsForum.Recordset.Bookmark = RsForum.Recordset.LastModified
Exit Sub
ErrUpdate_click:
Select Case Err.Number
Case 3022
MsgBox "Telah terjadi duplikasi pada Forum ID", vbOKOnly + vbInformation,
"Warning"
Case Else
MsgBox Err.Number & vbCrLf & Err.Description
End Select
End Sub
204
Modul Visual Basic 6
[email protected]
Pada Pesimistik Locks, penguncian dilakukan sesaat setelah metoda Edit, dan
penguncian dibuka kembali sampai metoda Update maupun Cancel Update,
sedangkan Optimistik Locks, penguncian dilakukan sesaat metoda Update dilakukan.

Masalah pada Pesimistik Locks


Masalah pada Pesimistik Locks adalah kegagalan penguncian karena Page sedang
dikunci oleh pemakai lain, sehingga permintaan Locks pada saat Edit (Pesimistik)
maupun Delete gagal dilakukan.

Anda dapat menggunakan Error Handling untuk menangani kegagalan ini dengan
mengevaluasi nilai Err yang dihasilkan, dalam hal ini adalah 3260.

Contoh :

Private Sub cmdEdit_Click()


On Error GoTo ErrcmdEdit_Click
Flag = flEdit
RsForum.Recordset.Edit 'Sumber Error pada Pesimistik Locks
Call Kunci(False)
Call AturTombol(False, False, False, True, True)

CancelcmdEdit:
Exit Sub

ErrcmdEdit_Click:
Select Case Err
'Data telah dihapus pemakai lain
Case 3167
MsgBox "Data telah dihapus pemakai lain" & vbCrLf & _
"Lakukan refresh data anda !", vbOKOnly + vbInformation
'Data Page (2 kb) telah dikunci oleh pemakai lain
Case 3260
nHitung = nHitung + 1
'Memungkinkan pemakai membuat keputusan ulangi
'Penguncian atau batal, maksimum 2 kali
If nHitung > 2 Then
nPilih = MsgBox("Ulangi penguncian ?", vbYesNo + _
vbQuestion)
If nPilih = vbYes Then
nHitung = 1
Else
Resume CancelcmdEdit
End If
End If
DoEvents 'menjalankan event windows
'menunda sejumlah waktu random
nTunda = nHitung ^ 2 * Int(Rnd * 3000 + 1000)
For i = 1 To nTunda: Next i
Resume
Case Else
MsgBox "Error " & Err & ":" & Error, vbOKOnly
Resume CancelcmdEdit
End Select
End Sub
Private Sub cmdDelete_Click()
On Error GoTo ErrCmdDelete_Click
RsForum.Recordset.Delete 'Sumber Error pada Pesimistik Locks
RsForum.Recordset.MoveNext
If RsForum.Recordset.EOF Then
205
Modul Visual Basic 6
[email protected]
RsForum.Recordset.MoveLast 'Sumber Error kalau data telah habis
End If

CancelcmdDelete:
Exit Sub

ErrCmdDelete_Click:
Select Case Err.Number
'Data telah kosong
Case 3021
MsgBox "Data telah kosong", vbOKOnly + vbInformation, "Warning"
'Data Page (2 kb) telah dikunci oleh pemakai lain
Case 3260
MsgBox "Data dikunci user lain, hapus tidak dapat dilakukan !", vbOKOnly + vbInformation
Resume CancelcmdDelete
Case Else
MsgBox "Error" & Err.Number & vbCrLf & Err.Description
End Select
End Sub

Masalah pada Optimistik Locks


Masalah pada Optimistik Locks adalah kegagalan penguncian karena Page sedang
dikunci oleh pemakai lain, sehingga permintaan Locks pada saat Update (Optimistik)
gagal dilakukan, ataupun data telah diubah oleh pemakai lain sejak metoda Edit,
karena pada Optimistik Locks, tetap terbuka pemakai lain melakukan Edit terhadap
data yang sama.

Anda dapat menggunakan Error Handling untuk menangani kegagalan ini dengan
mengevaluasi nilai Err yang dihasilkan, dalam hal ini adalah 3260 (kegagalan
penguncian) dan 3197 (data telah berubah sejak metoda edit). Untuk merefresh data
yang telah berubah, anda dapat menggunakan metoda Move 0.

Contoh :

Private Sub cmdUpdate_Click()


On Error GoTo ErrcmdUpdate_click
If txtForumID.Text = "" Then
MsgBox "Forum ID tidak boleh kosong", vbCritical, "Warning"
Exit Sub
End If
If txtKeterangan.Text = "" Then
MsgBox "Keterangan tidak boleh kosong", vbCritical, "Warning"
Exit Sub
End If
If txtAlamat.Text = "" Then
MsgBox "Alamat tidak boleh kosong", vbCritical, "Warning"
Exit Sub
End If
RsForum.Recordset.Update 'Sumber Error Pada Optimistik Locks
Flag = flNone
Call Kunci(True)
Call AturTombol(True, True, True, False, False)
RsForum.Recordset.Bookmark = RsForum.Recordset.LastModified
CancelcmdUpdate:
Exit Sub
ErrcmdUpdate_click:
Select Case Err.Number
'Terjadi duplikasi pada Primary Key

206
Modul Visual Basic 6
[email protected]
Case 3022
MsgBox "Telah terjadi duplikasi pada Forum ID", vbOKOnly + vbInformation, "Warning"
'Data telah dihapus pemakai lain
Case 3167
MsgBox "Data telah dihapus pemakai lain" & vbCrLf & _
"Lakukan refresh data anda !", vbOKOnly + vbInformation
'Data telah berubah sejak metoda Edit
Case 3197
'Data pada recordset telah berubah
'sejak ditampilkan.
MsgBox "Data telah diubah oleh pemakai lain !", vbOKOnly + vbInformation
'Hal ini secara otomatis akan menyegarkan
'kembali recordset untuk menampilkan data terakhir
RsForum.Recordset.Move 0
Resume CancelcmdUpdate
'Data Page (2 kb) telah dikunci oleh pemakai lain
Case 3260
'Record dikunci pemakai lain
nHitung = nHitung + 1
'Mencoba mengunci dua kali
'Memungkinkan pemakai membuat keputusan ulangi, batal
If nHitung > 2 Then
nPilih = MsgBox("Data sedang dikunci pemakai lain" & vbCrLf & _
"Ulangi penguncian ?", vbYesNo + _
vbQuestion)
If nPilih = vbYes Then
nHitung = 1
Else
Resume CancelcmdUpdate
End If
End If
DoEvents 'menjalankan event windows
'menunda sejumlah waktu random
nTunda = nHitung ^ 2 * Int(Rnd * 3000 + 1000)
For i = 1 To nTunda: Next i
Resume
Case Else
MsgBox "Error " & Err & ":" & Error, vbOKOnly
Resume CancelcmdUpdate
End Select
End Sub

Recordset pada lingkungan MultiUser


Table

Suatu Recordset jenis Tabel mengambil data dari suatu tabel, anda dapat melakukan
tambah, perbaiki maupun hapus data dari tabel, Hanya record yang aktif yang dimuat
ke memori. Sehingga perubahan, penambahan dan penghapusan data oleh pemakai
lain dapat langsung diakses.

Dynaset

Recordset jenis Dynaset adalah himpunan dari record-record secara dinamis yang
dapat mengandung field-field dari satu atau lebih tabel maupun query yang dapat di
update. Ketika user mengupdate data, maka tabel yang berkaitan akan berubah. Pada
lingkungan MultiUser, perubahan data tersebut dapat langsung diakses, tetapi jika
seorang user melakukan penambahan data, data tersebut tidak akan kelihatan sama
user lain, sampai pemakaian metoda Requery (pada Data Kontrol digunakan Refresh).
207
Modul Visual Basic 6
[email protected]
Jika seorang user menghapus suatu record, user lain akan diberitahu ketika akan
mengakses record tersebut.

Contoh :

Private Sub cmdRefresh_Click()


RsForum.Refresh
End Sub

Latihan 1
Judul : Pengaturan Program MultiUser dengan Pesimistik Locks

1. Aktifkan kembali Program Latihan 3 Modul 9

2. Ubah Recordset Type pada Data Kontrol RsForum menjadi Table

3. Lakukan koding pada Event Form_Load, sebagai berikut :

Private Sub Form_Load()


RsForum.Refresh
RsForum.Recordset.LockEdits = True 'Pesimistik Locks
End Sub

4. Lakukan perbaikan pada Event cmdEdit_Click, sebagai berikut :

Private Sub cmdEdit_Click()


On Error GoTo ErrcmdEdit_Click
Flag = flEdit
RsForum.Recordset.Edit
Call Kunci(False)
Call AturTombol(False, False, False, True, True)

CancelcmdEdit:
Exit Sub

ErrcmdEdit_Click:
Select Case Err
'Data telah dihapus pemakai lain
Case 3167
MsgBox "Data telah dihapus pemakai lain" & vbCrLf & _
"Lakukan refresh data anda !", vbOKOnly + vbInformation
'Data Page (2 kb) telah dikunci oleh pemakai lain
Case 3260
nHitung = nHitung + 1
'Memungkinkan pemakai membuat keputusan ulangi
'Penguncian atau batal, maksimum 2 kali
If nHitung > 2 Then
nPilih = MsgBox("Ulangi penguncian ?", vbYesNo + _
vbQuestion)
If nPilih = vbYes Then
nHitung = 1
Else
Resume CancelcmdEdit
End If
End If
DoEvents 'menjalankan event windows
208
Modul Visual Basic 6
[email protected]
'menunda sejumlah waktu random
nTunda = nHitung ^ 2 * Int(Rnd * 3000 + 1000)
For i = 1 To nTunda: Next i
Resume
Case Else
MsgBox "Error " & Err & ":" & Error, vbOKOnly
Resume CancelcmdEdit
End Select
End Sub
4. Lakukan perbaikan pada Event cmdDelete_Click, sebagai berikut :
Private Sub cmdDelete_Click()
On Error GoTo ErrCmdDelete_Click
RsForum.Recordset.Delete
RsForum.Recordset.MoveNext
If RsForum.Recordset.EOF Then
RsForum.Recordset.MoveLast
End If

CancelcmdDelete:
Exit Sub

ErrCmdDelete_Click:
Select Case Err.Number
'Data telah kosong
Case 3021
MsgBox "Data telah kosong", vbOKOnly + vbInformation, "Warning"
'Data Page (2 kb) telah dikunci oleh pemakai lain
Case 3260
MsgBox "Data dikunci user lain, hapus tidak dapat dilakukan !", vbOKOnly + vbInformation
Resume CancelcmdDelete
Case Else
MsgBox "Error" & Err.Number & vbCrLf & Err.Description
End Select
End Sub

5. Simpan Project Anda, dan pada menu file pilih Make Project1.Exe, lakukan
penyimpanan ke folder dimana Indoprog.mdb berada.

6. Jalankan Project1.exe (Pemakai 1)

7. Jalankan Project1.exe untuk kedua (Pemakai 2) kali tanpa menutup yang


sebelumnya.

8. Lakukan berbagai aktifitas seperti tambah data, perbaiki data pada record yang
sama, hapus data, dll. Perhatikan prilaku pada program anda pada lingkungan
MultiUser.

Latihan 2
Judul : Pengaturan Program MultiUser dengan Optimistik Locks

1. Aktifkan kembali project sebelumnya dan lakukan perubahan pada koding Event
Form_Load, sebagai berikut :

Private Sub Form_Load()

209
Modul Visual Basic 6
[email protected]
RsForum.Refresh
RsForum.Recordset.LockEdits = True 'Pesimistik Locks
End Sub

2. Lakukan perbaikan koding untuk Event cmdUpdate_Click menjadi sebagai berikut :

Private Sub cmdUpdate_Click()


On Error GoTo ErrcmdUpdate_click
If txtForumID.Text = "" Then
MsgBox "Forum ID tidak boleh kosong", vbCritical, "Warning"
Exit Sub
End If
If txtKeterangan.Text = "" Then
MsgBox "Keterangan tidak boleh kosong", vbCritical, "Warning"
Exit Sub
End If
If txtAlamat.Text = "" Then
MsgBox "Alamat tidak boleh kosong", vbCritical, "Warning"
Exit Sub
End If
RsForum.Recordset.Update
Flag = flNone
Call Kunci(True)
Call AturTombol(True, True, True, False, False)
RsForum.Recordset.Bookmark = RsForum.Recordset.LastModified

CancelcmdUpdate:
Exit Sub

ErrcmdUpdate_click:
Select Case Err.Number
Case 3022
MsgBox "Telah terjadi duplikasi pada Forum ID", vbOKOnly + vbInformation, "Warning"
Case 3167
MsgBox "Data telah dihapus pemakai lain" & vbCrLf & _
"Lakukan refresh data anda !", vbOKOnly + vbInformation
Case 3197
'Data pada recordset telah berubah
'sejak ditampilkan.
MsgBox "Data telah diubah oleh pemakai lain !", vbOKOnly + vbInformation
'Hal ini secara otomatis akan menyegarkan
'kembali recordset untuk menampilkan data terakhir
RsForum.Recordset.Move 0
Resume CancelcmdUpdate
Case 3260
'Record dikunci pemakai lain
nHitung = nHitung + 1
'Mencoba mengunci dua kali
'Memungkinkan pemakai membuat keputusan ulangi, batal
If nHitung > 2 Then
nPilih = MsgBox("Data sedang dikunci pemakai lain" & vbCrLf & _
"Ulangi penguncian ?", vbYesNo + _
vbQuestion)
If nPilih = vbYes Then
nHitung = 1
Else
Resume CancelcmdUpdate
End If
End If
DoEvents 'menjalankan event windows
'menunda sejumlah waktu random
nTunda = nHitung ^ 2 * Int(Rnd * 3000 + 1000)
For i = 1 To nTunda: Next i
210
Modul Visual Basic 6
[email protected]
Resume
Case Else
MsgBox "Error " & Err & ":" & Error, vbOKOnly
Resume CancelcmdUpdate
End Select
End Sub

3. Lakukan percobaan yang sama seperti Latihan 1

Latihan 3
Judul : Mencoba Dynaset di lingkungan MultiUser

Lakukan percobaan RecordsetType Dynaset untuk program Latihan 1 dan 2 dan


tambahkan tombol untuk refresh Recordset.

Private Sub cmdRefresh_Click()


RsForum.Refresh
End Sub

Membuat Remote Administrator Tool


assassin007 writes: Pada bagian ini kita akan melihat bagaimana melakukan sesuatu yang agak lain
yaitu melakukan operasi pada sistem remote. Pada bagian ini kita akan bermain dengan fungsi API
Windows dan komponen Winsock.

Ayo kembali kemasalah koding. Untuk membuat suatu RAT (Remote Administration Tool) kita
membutuhkan dua program yaitu klient dan server. Bagian server berjalan di sistem remote yang mana
akan menjalankan perintah kita. Bagian klient berjalan pada sistem dimana kita akan memberikan
perintah.

Bagian Klient

1. Aktifkan Visual Basic 6 dan buat suatu project baru


2. Pada form tambahkan 4 (empat) text box dengan nama txtIp, txtMsg, txtPing, text1.
3. Tambahkan lagi 6 (enan) command button, dengan nama cmdsend, command1, command2,
command3, command4, command5.
4. Tambahkan sebuah kontrol winsock (klik menu project -> Componet dan beri tanda check
Microsoft Winsock Control 6.0 (SP4)”) dan tanamkan pada form.
5. Copykan koding berikut ke project anda.

Option Explicit

Private Sub Form_Load()


‘connects to port 3539 on remote system
Winsock1.RemotePort = 3539
End Sub

Private Sub txtip_KeyDown(KeyCode As Integer, Shift As Integer)


If KeyCode = 13 Then ‘on pressing return(Enter) key
Winsock1.RemoteHost = txtip.Text
Winsock1.Connect ‘Connect to the remote host
End If
End Sub
211
Modul Visual Basic 6
[email protected]

Private Sub cmdsend_Click()


‘Send the typed message to server
Winsock1.SendData ("msg " + txtmsg.Text)
txtmsg.Text = ""
End Sub

Private Sub Command1_Click()


‘Send command to open the CD-DRIVE
Winsock1.SendData "cmd opencd"
End Sub

Private Sub Command2_Click()


‘Send command to close CD-DRIVE
Winsock1.SendData "cmd closecd"
End Sub

Private Sub Command3_Click()


‘Send command to shutdown the remote system
Winsock1.SendData "cmd shutdown"
End Sub

Private Sub Command4_Click()


‘Close the connection
Winsock1.Close
End Sub

Private Sub Command5_Click()


‘Disable double clicking on the remote system
Winsock1.SendData "cmd blockdbl"
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)


‘on pressing return(Enter) execute the path specified on the remote system
If KeyCode = 13 Then
Winsock1.SendData "exe " & Text1.Text
End If
End Sub

Private Sub txtmsg_KeyDown(KeyCode As Integer, Shift As Integer)


‘On pressing return key send the message to server
If KeyCode = 13 Then
Winsock1.SendData ("msg " + txtmsg.Text)
txtmsg.Text = ""
End If
End Sub

Private Sub txtping_KeyDown(KeyCode As Integer, Shift As Integer)


Dim b As String
Dim a As Double
If KeyCode = 13 Then
‘Ping the specified address
b = "ping " & txtping.Text
a = Shell(b, vbNormalFocus)
End If
End Sub

Bagian Server

Bagian server harus dapat menyembunyikan diri dan menerima pesan dari klient dan menjalankan
perintah sesuai dengan perintah pesan.

212
Modul Visual Basic 6
[email protected]
1. Buat sebuah project baru
2. Tambahkan sebuah komponen winsock ke form dan lakukan koding berikut

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)


‘If connection is requested by a remote system
‘Close the current connection and accept the new connection
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Accept requestID
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)


‘when data arrives from the remote system
Dim data As String
Winsock1.GetData data ‘Get the arrived data to code variable
‘Get the first 3 characters of the data to cmd variable
cmd = Mid(data, 1, 3)
‘Get all the data from the fifth character to cmdtxt variable
cmdtxt = Mid(data, 5)
On Error Resume Next
If cmd = "cmd" Then ‘if the data arrived is a command
Select Case cmdtxt
Case "opencd"
Call mciExecute("Set CDaudio door open") ‘opens CD-DRIVE
Case "closecd"
Call mciExecute("Set CDaudio door closed") ‘close CD-DRIVE
Case "shutdown"
rVal = ExitWindowsEx(EWX_SHUTDOWN, 0&) ‘Shutdown
Case "blockdbl"
a = SetDoubleClickTime(50) ‘disable double click
End Select
End If
If cmd = "exe" Then ‘To execute the path sent
a = Shell(cmdtxt, vbNormalFocus) ‘Open the file specified
End If
If cmd = "msg" Then ‘If arrived is a message
MsgBox cmdtxt, vbCritical, "Message" ‘Display that message in message box
End If
End Sub

Private Sub Form_Load()


a = RegisterServiceProcess(GetCurrentProcessId, 1)
Me.Visible = False ‘Hides the program from the notice of user

Winsock1.LocalPort = 3539 ‘sets local port to 3539


Winsock1.Listen ‘Listens at the port specified, 3539
End Sub

Now a module to the server program and copy the following lines of code to the module. All these are API
functions which help us to interact with Input/Otput devices of the system, multimedia system etc…

Declare Function SetDoubleClickTime Lib "user32" (ByVal wCount As Long) As Long


Declare Function mciExecute Lib "winmm.dll" (ByVal lpstrCommand As String) As Long
Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As
Long
Public Declare Function RegisterServiceProcess Lib "kernel32.dll" (ByVal dwProcessId As Long, ByVal
dwType As Long) As Long
Declare Function ShowCursor Lib "user32" (ByVal bShow As Long) As Long

Kompilasi kedua program menjadi Executable (file EXE). Untuk mencoba kedua program jalankan pada
komputer local dengan IP 127.0.0.1.

213
Modul Visual Basic 6
[email protected]

Membuat Program Mengeja Bilangan


Oleh : Hendra & Susan Dewichan

Bagaimana anda membaca 123456789.55 ?

Tentu saja : Seratus Duapuluh Tiga Juta Empat Ratus Lima Puluh Enam Ribu Tujuh
Ratus Delapan Puluh Sembilan Rupiah Lima Puluh Lima Sen

Tetapi bagaimana kalau komputer yang melakukan hal tersebut ?

Tentu saja kita membutuhkan suatu program yang dapat menterjemahkan angka-angka
tersebut menjadi kata-kata yang sesuai, dan dapatkah anda bayangkan repotnya
melakukan hal tersebut.

Saya sering membaca di mailing list pemrograman, banyak orang menanyakan akan
hal tersebut, dan memang tidak sesederhana seperti kita mengeja ketika menulis
Kwitansi, Slip Tabungan, CEK dan Giro.

Baiklah, sekarang saya akan membantu anda untuk memahami dasar dari program
mengeja terbilang, mari kita lihat kembali angka 123456789.55 yang anda baca
sebagai Seratus Duapuluh Tiga Juta Empat Ratus Lima Puluh Enam Ribu Tujuh Ratus
Delapan Puluh Sembilan Rupiah Lima Puluh Lima Sen, dan akan saya penggal menjadi
potongan yang yang lebih kecil sebagai berikut :

123 456 789 .55

dan perhatikan potongan ejaannya

Seratus Duapuluh Tiga Juta

Empat Ratus Limapuluh Enam Ribu

Tujuh Ratus Delapanpuluh Sembilan Rupiah

Limapuluh Lima Sen

Jadi pada prinsipnya kita memotongnya menjadi bagian (123) Juta, (456) Ribu, (789)
Rupiah, dan (55) Sen.

Sekarang misalnya kita menggambil 123 yang kita baca sebagai Seratus Duapuluh
Tiga, dimana kalau kita penggal menjadi potongan yang lebih kecil sebagai berikut :

123

Se ratus

Dua puluh

214
Modul Visual Basic 6
[email protected]
Tiga

Jadi pada prinsipnya kita memotongnya menjadi bagian (1) ratus, (2) puluh, (3) satuan.

Sehingga akhirnya kita dapat menyusun suatu program sebagai berikut :

Public Function terbilang(x As Currency)


Dim triliun As Currency
Dim milyar As Currency
Dim juta As Currency
Dim ribu As Currency
Dim satu As Currency
Dim sen As Currency
Dim baca As String
'Jika x adalah 0, maka dibaca sebagai 0
If x = 0 Then
baca = angka(0, 1)
Else
'Pisah masing-masing bagian untuk triliun, milyar, juta, ribu, rupiah, dan sen
triliun = Int(x * 0.001 ^ 4)
milyar = Int((x - triliun * 1000 ^ 4) * 0.001 ^ 3)
juta = Int((x - triliun * 1000 ^ 4 - milyar * 1000 ^ 3) / 1000 ^ 2)
ribu = Int((x - triliun * 1000 ^ 4 - milyar * 1000 ^ 3 - juta * 1000 ^ 2) / 1000)
satu = Int(x - triliun * 1000 ^ 4 - milyar * 1000 ^ 3 - juta * 1000 ^ 2 - ribu * 1000)
sen = Int((x - Int(x)) * 100)
'Baca bagian triliun dan ditambah akhiran triliun
If triliun > 0 Then
baca = ratus(triliun, 5) + "triliun "
End If
'Baca bagian milyar dan ditambah akhiran milyar
If milyar > 0 Then
baca = ratus(milyar, 4) + "milyar "
End If
'Baca bagian juta dan ditambah akhiran juta
If juta > 0 Then
baca = baca + ratus(juta, 3) + "juta "
End If
'Baca bagian ribu dan ditambah akhiran ribu
If ribu > 0 Then
baca = baca + ratus(ribu, 2) + "ribu "
End If
'Baca bagian rupiah dan ditambah akhiran rupiah
If satu > 0 Then
baca = baca + ratus(satu, 1) + "rupiah "
End If
'Baca bagian sen dan ditambah akhiran sen
If sen > 0 Then
baca = baca + ratus(sen, 0) + "sen"
End If
End If
terbilang = UCase(Left(baca, 1)) & LCase(Mid(baca, 2))
End Function

Function ratus(x As Currency, posisi As Integer) As String


Dim a100 As Integer, a10 As Integer, a1 As Integer
Dim baca As String
a100 = Int(x * 0.01)
a10 = Int((x - a100 * 100) * 0.1)
a1 = Int(x - a100 * 100 - a10 * 10)
'Baca Bagian Ratus
If a100 = 1 Then
baca = "Seratus "
215
Modul Visual Basic 6
[email protected]
Else
If a100 > 0 Then
baca = angka(a100, 2) + "ratus "
End If
End If
'Baca Bagian Puluh dan Satuan
If a10 = 1 Then
baca = baca + angka(a10 * 10 + a1, 2)
Else
If a10 > 0 Then
baca = baca + angka(a10, 2) + "puluh "
End If
If a1 > 0 Then
If posisi = 2 And a100 = 0 And a10 = 0 Then
baca = baca + angka(a1, 1)
Else
baca = baca + angka(a1, 2)
End If
End If
End If
ratus = baca
End Function

Function angka(x As Integer, posisi As Integer)


Select Case x
Case 0: angka = "Nol"
Case 1:
If posisi = 2 Then
angka = "Satu "
Else
angka = "Se"
End If
Case 2: angka = "Dua "
Case 3: angka = "Tiga "
Case 4: angka = "Empat "
Case 5: angka = "Lima "
Case 6: angka = "Enam "
Case 7: angka = "Tujuh "
Case 8: angka = "Delapan "
Case 9: angka = "Sembilan "
Case 10: angka = "Sepuluh "
Case 11: angka = "Sebelas "
Case 12: angka = "Duabelas "
Case 13: angka = "Tigabelas "
Case 14: angka = "Empatbelas "
Case 15: angka = "Limabelas "
Case 16: angka = "Enambelas "
Case 17: angka = "Tujuhbelas "
Case 18: angka = "Delapanbelas "
Case 19: angka = "Sembilanbelas "
End Select
End Function

216

Anda mungkin juga menyukai