Anda di halaman 1dari 42

MICROSOFT VISUAL BASIC 6.

0
mail.shalim@yahoo.com
[Type your address]  [Type your phone number]  [Type your e-mail address]
SENDIRI PEMROGRAMAN
VISUAL BASIC 6.0
2004 S. HALIM
BELAJAR
1

BAB 1
PENGENALAN VISUAL BASIC

Visual Basic adalah bahasa pemrograman pertama yang menggunakan


konsep pemrograman visual. Dengan gabungan bahasa basic dan desain visual
secara grafis, Visual Basic menyediakan kemudahan dan kesederhanaan untuk
mengembangkan aplikasi Windows tanpa pengorbanan kinerja program.

IDE (Integrated Development Environment) Visual Basic 6.0

IDE VB terdiri dari beberapa komponen yang penting, diantaranya :


1. Project explorer, untuk menampilkan semua modul, form, dan resource yang
digunakan pada project. Dapat dimunculkan dengan Ctrl+R.
2. Form Designer, untuk merancang user interface aplikasi anda.
3. ToolBox Window, memuat sekumpulan komponen/object untuk anda pakai.
Anda juga dapat menambah komponen sendiri dengan menekan Ctrl+T.
4. Code Window, untuk menuliskan kode program. Masing-masing form
designer memiliki satu code window.
5. Object Browser, menampilkan method, property, dan event yang terdapat
pada suatu object. Dapat dimunculkan dengan menekan tombol F2.
2

6. Property Window, menampilkan daftar properti dari suatu komponen yang


sedang dipilih. Dengan property window, kita dapat merubah karakteristik
suatu komponen saat design time.
7. Menu Bar, menyediakan menu-menu untuk operasi file, edit, view, compile,
dan sebagainya.
8. Tool Bar, berisi icon-icon yang berfungsi sebagai shortcut untuk
mempercepat pemilihan perintah tertentu.
9. Form Layout , untuk mensimulasikan letak form pada monitor saat program
dijalankan.

Visual Basic termasuk bahasa pemrograman yang berorientasi object.


(Object-Oriented Programming). Namun, Visual basic bukan bahasa
pemrograman yang murni object-oriented karena Visual Basic tidak mengenal
inheritance dan polymorphism.

Setiap object memiliki Property dan Method (Behaviour). Property


merupakan sifat atau karakteristik dari object dan Method adalah perilaku object.
Contohnya adalah Tombol (Command Button). Pada VB, sebuah tombol memiliki
property seperti Backcolor, Caption, Visible, Enabled, dll. Tombol juga memiliki
method seperti move, drag.

Cara kerja program Visual Basic adalah Event-driven. Artinya adalah


bahwa program Visual Basic dikendalikan sepenuhnya oleh event. Event
merupakan suatu kejadian yang dikenakan pada suatu object. Program akan
menunggu sampai adanya respon dari user, misalnya tombol diklik, menu dipilih,
keypress, dll. Setiap object/komponen pada VB memiliki event. Dan setiap
komponen memiliki kumpulan event yamg berbeda. Misalnya event change pada
kontrol textbox. Kita tidak dapat menemukan event ini pada kontrol label.
3

BAB 2
PEMROGRAMAN DALAM VISUAL BASIC

Proses pemrograman pada VB dibedakan menjadi 2 tahap, yaitu :


Fase Desain
Pada fase ini kita dapat menyusun tampilan yang nantinya akan
dihasilkan sebagai output, menset property komponen, dan menulis kode
program dalam prosedur.

Fase Runtime
Pada fase ini, kita memonitor jalannya program kita. Kita dapat
menggunakan tool untuk melakukan debug atau testing yang mana pada fase
desain, tool tersebut tidak berfungsi. Tool-tool debug ini antara lain adalah:
- Local Window untuk menampilkan nama dan nilai dari suatu variabel lokal
pada modul atau prosedur.
- Watches Windows untuk memonitor nilai dan variabel dalam program kita
secara keseluruhan termasuk variabel global.
- Call Stack untuk menampilkan semua prosedur yang sedang menunggu
prosedur saat ini untuk diselesaikan. Call stack akan ada ketika kita
melakukan break saat program berjalan.

1. Penamaan
a. Control Prefix
Suatu property yang dimiliki semua kontrol adalah property name.
Properti ini sangat penting karena berfungsi sebagai pengenal kontrol
pada kode program. Berikut adalah standar penamaan untuk komponen
Visual Basic.
Nama Kontrol Prefix
CheckBox Chk
ComboBox Cbo
CommandButton Cmd
Data Dat
DirListBox Dir
DriveListBox Drv
FileListBox Fil
Frame Fra
HscrollBar Hsb
Image Img
Label Lbl
Line Lin
ListBox Lst
OLE Container Control Ole
4

OptionButton Opt
PictureBox Pic
Shape Shp
TextBox Txt
Timer Tmr
VscrollBar Vsb

b. Variable Prefix
Pemberian nama variabel harus menggunakan kata yang singkat,
jelas dan mencerminkan isi variabel tersebut. Tabel berikut menunjukkan
beberapa prefix variabel yang umum digunakan.

Prefix Variabel Contoh


b Boolean bValue
ctr Control ctrNext
c Currency cAmount
db Database dbPegawai
dt Date/Time dtTanggal
d Double dNum
ds Dynaset dsOverdue
h Handle hWnd
int Integer intNum
l Long lNum
s Single sNum
str String strNama
a Array aMyArr
g Global gTotal
td Tabledef tdEmployees
m Local to module or form m_Jumlah

2. Variabel
a. Deklarasi
Deklarasi variabel pada VB dapat dilakukan secara eksplisit dan
implicit. Jika variable tidak dideklarasikan secara eksplisit maupun implicit,
maka variabel secara otomatis akan dianggap sebagai variant.
- Eksplisit
Ada empat level scope yang menentukan jangkauan variable pada
program, yaitu:
* Level Prosedur : lifetime variabel hanya selama prosedur dijalankan.
Dideklarasikan dengan kata kunci Dim. Misalnya:
Dim intNum as Integer
Dim strNama as String

* Level Prosedur Statik : lifetime variabel selama program aplikasi


masih berjalan. Dideklarasikan dengan kata kunci Static. Contoh:
5

Static intCounter as Integer

* Level Form / Modul : variabel yang dideklarasikan pada level ini


dapat dikenali oleh semua prosedur dalam sebuah form/modul.
Dideklarasikan dalam bagian General jendela kode dengan kata
kunci Dim atau Private. Contoh:
Private dJumlah as Double
Dim lnum as Long

* Level Global : Variabel dikenali dan dapat dipanggil oleh semua


prosedur dalam project atau aplikasi. Dideklarasikan dengan kata
kunci Public atau Global pada bagian General jendela kode.
Contoh: .
Public strType as String
Global intSum as Integer
- Implisit
Untuk deklarasi variabel secara implisit digunakan suffix sebagai
berikut :

Tipe Data Suffix Contoh


Integer % Count% = …
Long & Total& = …
Single ! Hasil! = …
Double # Jumlah# = …
Currency @ Harga@ = …
String $ Nama$ = “ ”

b. Konstanta
Konstanta digunakan untuk menset suatu variabel yang nilainya
tidak berubah. Cara pendeklarasiannya adalah dengan menambahkan
kata kunci Const. Misalnya :
Const AppTittle = “Belajar Visual Basic”
Public Const PI = 3.14159265

c. Tipe Data VB
Tipe data yang terdapat dalam Visual Basic adalah sebagai berikut :
Tipe data Ukuran Range
Byte 1 byte 0 s/d 255
Boolean 2 byte True atau False
Integer 2 byte -32,768 s/d 32,767
-2,147,483,648 s/d
Long 4 byte
2,147,483,647
-3.402823E38 s/d
Single 4 byte
3.402823E38
6

-1.79769313486231E308 s/d
Double 8 byte
1.79769313486232E308
-922,337,203,685,477.5808 s/d
Currency 8 byte
922,337,203,685,477.5807
January 1, 100 s/d December
Date 8 byte
31, 9999
Object 4 byte Referensi Object
Untuk fixed-length 65.000
String 1 byte per karakter karakter dan untuk string
dinamis lebih kurang 2 milyar
Variant 16 byte + 1 byte Menerima semua tipe data
Range elemen sesuai dengan
User-defined Tergantung jumlah
tipe data masing-masing
type elemen
elemen.

User-defined type dapat dibuat dengan menggunakan kata kunci Type.


Misalnya :
Public Type KOORDINAT
X as Integer
Y as Integer
End Type

3. Array
Array adalah satu variabel yang menyimpan data secara berurutan
dengan indeks. Cara pendeklarasiannya adalah sebagai berikut:
Dim arrPos(4) as long
Pendeklarasian ini menghasilkan 5 elemen dengan indeks 0 sampai 4. Untuk
mengubah indeks awal menjadi 1, kita dapat mendeklarasikan
Option base 1 atau Dim arrPos(1 To 5) as integer
Variabel array juga dapat berupa array multidimensi. Misalnya:
Dim arrPos(4,4) as Long
Dengan deklarasi seperti ini maka array yang dibuat adalah 2 dimensi yaitu
5x5. Array juga dapat berupa array dinamik dimana jumlah elemen dapat
disesuaikan dengan kebutuhan. Contoh:
Dim arrDinamis()
Kita dapat mengalokasikan jumlah elemen dengan kata kunci Redim, seperti
Redim arrDinamis(x, y)
Agar nilai pada variabel tidak hilang setiap kita mengalokasi ulang maka kita
perlu menambahkan kata kunci Preserve.
Redim Preserve arrDinamis (Ubound(arrDinamis)+1)
Berikut ini adalah perintah yang berhubungan dengan array :
7

 Lbound (nama_array [, dimensi ]) : digunakan untuk mengembalikan


indeks terkecil dari nama_array untuk dimensi yang ke dimensi.
Parameter dimensi bersifat optional.
 Ubound (nama_array [, dimensi ]) : digunakan untuk mengembalikan
indeks terbesar dari nama_array untuk dimensi yang ke dimensi.
 Array (arglist) : digunakan untuk menciptakan satu baris array. Contoh:
Dim A As Variant
A = array (1,2,3,4,5,6,7,8,9,0)
Print A(4) „ Maka akan tercetak 5
 Isarray (varname) : digunakan untuk menentukan apakah suatu
variabel itu array atau bukan. Contoh:
Dim A As Boolean, Dim X(9) as Long
A = isarray(x) „ Jawabannya True

4. Statement
Statement adalah perintah yang dikenal dan dikerjakan oleh Visual
Basic. Statement dapat berupa:
 Assigment Statement : Digunakan untuk memberi nilai pada suatu
variabel sehingga statement ini terdiri dari nama variabel diikuti
operator penugasan (=) dan kemudian ekspresi. Misalnya
strNama = “Halim”
 Prosedure Call : Digunakan untuk memanggil suatu prosedur/sub
prosedur. Prosedur adalah sepenggal program yang memiliki fungsi
khusus. Misalnya kita memiliki satu prosedur bernama Cetak. Maka
kita dapat memanggilnya dengan cara:
Cetak „ atau
Call Cetak
 Function Call : merupakan gabungan dari kedua statement diatas.
Statement ini memanggil function atau penggalan program yang
mengembalikan hasil untuk ditampung dalam suatu variabel. Misalnya:
A = Pangkat (3,5)
B = A + Pangkat(2,8)
5. Operator
Operator merupakan bagian dari suatu ekspresi yang menunjukkan
operasi yang dilakukan terhadap operand. Operand adalah ekspresi yang
dikenakan operasi. Semua operator membutuhkan minimal satu operand.
Berdasarkan fungsinya operator dapat dibedakan menjadi :
 Operator Aritmatika, adalah operator yang digunakan dalam operasi
aritmatika dimana operannya bertipe numerik.
Operator Operasi
+ Penjumlahan
- Pengurangan
8

* Perkalian
/ Pembagian bilangan real
\ Hasil Pembagian
^ Pemangkatan
Mod Sisa Pembagian

Urutan derajat (precedence) operator


Precedence
^
*/
\
Mod
+-

 Operator String, adalah operator yang digunakan untuk melakukan


penggabungan string yaitu tanda + atau &. Misalnya:
X$ = “Mari Belajar” & “Visual” + “Basic”

 Operator Pembanding, adalah operator yang digunakan untuk


membandingkan dua operand dan menghasilkan suatu nilai boolean
atau integer yaitu true(-1) atau false(0). Ada 3 statement yang dapat
digunakan dalam perbandingan, yaitu:
Hasil = exp1 opt_pembanding exp2
Hasil = Object1 is Object2
Hasil = String1 like pattern
Operator pembanding dalam Visual Basic terdiri dari:
Operator Perbandingan
> Lebih besar
< Lebih kecil
>= Lebih besar sama dengan
<= Kurang dari sama dengan
= Sama dengan
<> Tidak sama dengan
Mod Sisa Pembagian
Operator is digunakan untuk membandingkan dua object reference
untuk mengetahui apakah kedua object reference menunjuk pada
object yang sama. Misalnya:
Set a = c
Set b = c
Hasil = a is b
Contoh diatas akan menghasilkan nilai True.
9

Operator Like digunakan untuk membandingkan string dengan pola


pattern. Berikut adalah karakter pattern dalam VB.
Karakter Pattern Perbandingan pada string
? Sembarang satu karakter
* Sembarang nol atau lebih karakter
# Sembarang satu digit karakter (0-9)
[charlist] Sembarang satu karakter dalam charlist
Sembarang satu karakter yang tidak
[!charlist]
termasuk dalam charlist

 Operator Logika, adalah operator yang digunakan untuk melakukan


operasi aljabar boolean.Operator ini antara lain:
Operator Operasi
Not Negasi
And Dan
Or Atau
Xor Exclusive Or
Eqv Equivalence
Imp Implikasi
Selain sebagai operator logika, keenam operator ini juga berfungsi
sebagai operator pembanding bitwise yang membandingkan per-bit 2
nilai atau variabel numerik, misalnya:
Hasil = 10 and 8 „ Hasil =8
Hasil = True and False „ Hasil = False

6. Parameter Fungsi dan prosedur


Pengiriman parameter dibedakan menjadi 2 yaitu:
 Passing By value
Yaitu passing parameter dimana yang dikirim adalah nilainya. Parameter
aktual tidak akan berubah jika parameter formal nilainya diubah.
Penulisannya:
Private Sub KirimByValue (ByVal X as Integer)
X = 10
End Sub
Private Sub Test ()
Dim X As Integer
X = 1
KirimByValue X
Print X „ X tetap bernilai 1
End Sub
 Passing By Reference
Yaitu passing parameter dimana alamat variabel yang dikirimkansehingga
parameter aktual akan berubah jika parameter formal nilainya diubah.
10

Untuk mengirim parameter by reference anda dapat menambahkan


keyword ByRef atau tidak perlu sama sekali karena secara Default VB
melakukan passing parameter by reference. Misalnya:
Private Sub KirimByRef (X as Integer)
X = 10
End Sub
Private Sub Test ()
Dim X As Integer
X = 1
KirimByRef X
Print X „ X tetap bernilai 10
End Sub

Pengiriman parameter juga dapat ditentukan optional. Artinya


parameter boleh ada dan boleh juga tidak. Misalnya:
Private Sub Cetak (s1 As String, Optional s2 As String)
Print s1 & s2
End Sub
Private Sub Test ()
Cetak “Selamat!” „ Selamat!
Cetak “Selamat”, “Siang!” „ Selamat Siang!
End Sub

Kita juga dapat mengirim parameter dalam bentuk array misalnya:


Private Sub Send (Accept)
For i = 0 To Ubound(Accept)
Print Accept(i) & vbCrlf „ vbCrlf: Chr(13)+Chr(10)
Next i
End Sub

Parameter juga dapat berupa Enum yang kita buat sebelumnya. Misalnya:
Private Enum Tipe
Reguler = 1
Spesial = 2
End Enum
Private Sub Kelas (a As Tipe)
Msgbox “Kelas yang anda pilih adalah ” & a
End Sub
Private Sub Form_Load ()
Dim x As Tipe
X = Reguler
Kelas (x)
End Sub
11

7. Looping
Semua bahasa pemrograman memiliki perintah looping, dan dalam
Visual basic ada beberapa perintah perulangan, antara lain:
a. Do While atau While
Perulangan Do While atau While akan melakukan looping selama
kondisi yang diberikan masih terpenuhi. Perulangan hanya akan
dijalankan jika kondisi benar. Jika kondisi bernilai salah maka
perulangan tidak akan dijalankan sama sekali. Syntax:
Do While (Kondisi)
.........
Loop
While (Kondisi)
.........
Wend
Misalnya:
x=1 x=1
While x<=5 Do While (x<=5)
........ ........
x=x+1 x=x+1
Wend Loop
Kedua perintah diatas memiliki arti yang sama. Semua statement
diatas akan diulang sebanyak 5 kali yaitu selama nilai x masih tidak
lebih dari 5.
Syntax lain Do While adalah
Do
.........
Loop While (Kondisi)
Dengan syntax ini, Perulangan dijalankan minimal 1 kali. Setelah
perulangan dilakukan sekali, kondisi baru diperiksa. Jika benar maka
looping dilanjutkan, tetapi jika salah maka looping akan keluar.

b. Do Until
Perintah looping do until adalah kebalikan dari do while. Do until akan
melakukan looping selama kondisi salah. Jika kondisi yang diberikan
sudah terpenuhi maka looping akan berhenti. Syntax:
Do Until (Kondisi) Do
......... .........
Loop Loop Until (Kondisi)
Misalnya:
X=1 „ Looping akan terjadi 4x
Do Until X=5 „ sampai X=5
X=X+1
Loop
12

c. For....Next
Perulangan ini hanya digunakan jika jumlah perulangannya sudah
diketahui. Syntax:
For varname=nilaiawal To nilaiakhir [Step value]
............
Next varname
Step bersifat optional. Fungsinya adalah melakukan penambahan
terhadap varname sejumlah value. Jika tidak ditentukan maka value
dianggap 1 sehingga varname bertambah 1 mulai dari nilai awal.

Contoh Perulangan Positif (dari nilai kecil ke besar)


For i = 0 To 5
.......
Next i
Contoh Perulangan Negatif (dari nilai besar ke kecil)
For i = 10 To 1 step -1
.......
Next i

Untuk keluar dari perulangan dapat digunakan perintah exit do dan exit
for. Exit do tidak dapat digunakan pada perintah looping While...Wend.

8. Seleksi
Ada beberapa statement yang digunakan untuk perintah penyeleksian kondisi.
 If....Then....End If
Ada beberapa bentuk dan if :
 If kondisi then statement1
 If kondisi then
..............
statement1 „ akan dikerjakan apabila kondisi benar
End if
 If kondisi then
statement1 „ akan dikerjakan apabila kondisi benar
Else
statement2 „ akan dikerjakan apabila kondisi salah
End if
Contoh:
X=10
If x>=1 and x<20 Then
Msgbox “X berada antara 1 sampai 20”
Else
Msgbox “X tidak berada antara 1 sampai 20”
End If
13

 Select....End Select
Bentuk dari statement ini adalah:
Select case ekspresi
Case value_n : statement_n
Case Else
statement_n
End Select
Contoh:
X=2 „ Yang tercetak adalah “Dua”
Select Case X
Case 1: Print “Satu”
Case 2: Print “Dua”
Case 3: Print “Tiga”
End Select
14

BAB 4
FUNGSI DASAR VISUAL BASIC

Visual basic menyediakan beberapa fungsi dasar yang dapat kita


kelompokkan menjadi 3 bagian besar, yaitu:
 Fungsi Matematik
 String
 Tanggal dan waktu

1. Fungsi Matematik
Berikut ini adalah beberapa fungsi matematik yang umum dipakai:
Fungsi Keterangan
Abs() Menghasilkan nilai absolut
Atn() Menghasilkan nilai Arc Tangen
Cos() Menghasilkan nilai Cosinus
Exp() Menghasilkan nilai berbasis logaritma
Int() Menghasilkan nilai integer
Len() Jumlah karakter numerik
Log() Menghasilkan nilai logaritma natural
Rnd() Menghasilkan angka random dari 0 sampai 1
Round(a,b) Membulatkan nilai a sebesar b angka dibelakang koma
Sin() Menghasilkan nilai Sinus
Sqr() Akar Kuadrat
Tan() Menghasilkan nilai Tangen

2. Fungsi String
Berikut beberapa fungsi dasar string yang disediakan Visual Basic:

Fungsi Keterangan
Mengubah string menjadi nilai ascii. Contoh:
Asc(str) Dim X As Integer
X=Asc(“A”) „ X=65
Mengubah nilai ascii menjadi string. Contoh:
Chr(int) Dim X As String
X=Chr(65) „ X=A
Mencari posisi suatu substring dalam string. Contoh:
Intstr  Intstr bentuk 1 (case sensitive)
Print Instr(“abcd ABCD”,”ABC”) „ 6
15

 Intstr bentuk 2 (bisa diset non-case sensitive)


Print Instr(3,“abcd ABCD”,”ABC”) „ 4
 Intstr bentuk 3 (dengan start index)
Print Instr(1,“abcd ABCD”,”ABC”,
vbTextCompare) „ 1
Mengubah semua karakter menjadi huruf kecil. Contoh:
Lcase(str) Dim X As String
X=Lcase(“ABCD”) „ X=abcd
Mengambil n karakter dari kiri pada string. Contoh:
Left(str,int)
Print Left(“Alamat”,4) „ Alam
Mengetahui panjang suatu string. Contoh:
Len(str)
Print Len(“Text”) „ 4
Menghilangkan spasi di sebelah kiri string. Contoh:
Ltrim(str)
Print LTrim(“ Halo”) „ Hanya dicetak Halo
Mengambil sebanyak len karakter mulai dari start indeks
pada str. Contoh:
Mid(str,start,len)
Text = “Abcdefghij”
Print Mid(Text,3,4) „ cdef
Mengambil sebanyak len karakter dari kanan pada str.
Right(str,len) Contoh: Text = “123456789”
Print Right(Text, 3) „ 789
Menghilangkan spasi dikanan string. Contoh:
Rtrim(str)
Print Rtrim(“Aku “) „ Tercetak Aku
Mengubah numerik menjadi string. Contoh:
Dim X As Integer, A As String
Str(int)
X=10 „ nilai x, 10
A=”Nilai X=” & Str(X) „ diubah ke string
Membalikkan string. Contoh:
Strreverse(str)
Print Strreverse(“Dia”) „ tercetak aiD
Mengubah semua karakter menjadi huruf kapital. Contoh:
Ucase(str)
Print Ucase(“abc”) „ Tercetak ABC

3. Tanggal & Waktu


Pada Visual basic terdapat beberapa cara untuk membuat dan mengekstrak
tanggal dan waktu.
a. Memberikan nilai tanggal ke variabel
Cara 1:
x= “03/31/2004” atau x=#03/31/2004#
16

Perbedaan penggunaan tanda “ dan # adalah jika kita memberikan


tanggal yang tidak valid ke suatu variabel menggunakan tanda #, maka
pesan error akan muncul setelah kita selesai mengetik dan menekan
enter. Bila dengan tanda “, maka error baru muncul saat program
dijalankan sebagai runtime error.
Cara 2:
DateSerial(yy,mm,dd)
Bila menggunakan fungsi DateSerial untuk memberikan tanggal pada
variabel, maka bila anda memasukkan tanggal yang tidak valid maka
fungsi ini akan mengkonversinya ke tanggal yang berikutnya. Contoh:
Assigment valid : x = DateSerial(2004,03,31)
Maka x=03/31/2004
Assigment tidak valid : x =DateSerial(2004,12,32)
Maka x menjadi 1 Januari 2004

b. Fungsi Day(), Month(), Year()


Day(), Month() dan Year() digunakan untuk mengambil tanggal.
Contoh:
X = Day(“03/31/2004”) „ X=31
X = Month(“03/31/2004”) „ X=3
X = Year(“03/31/2004”) „ X=2004

c. Fungsi Weekday(Date)
Untuk mengetahui hari keberapa dalam satu minggu. Fungsi ini
mengembalikan nilai integer sebagai berikut:
0 = Minggu 4 = Kamis
1 = Senin 5 = Jum‟at
2 = Selasa 6 = Sabtu
3 = Rabu
Contoh:
X = Weekday(“03/31/2004”) „ X= 3 (Rabu)

d. Fungsi DateAdd(interval, number, date)


Untuk menambahkan suatu tanggal berdasarkan interval tertentu.
Interval Keterangan
D Tanggal
H Jam
M Bulan
N Menit
S Detik
W Hari dalam minggu
Ww Minggu
Y Hari dalam tahun
Yyyy Tahun
17

Contoh :
Dim A, B As Date
A = “03/31/2004”
B = DateAdd(“m”,A,1) „ maka B = 04/31/2004

e. Fungsi DateDiff(interval, datestart, dateend)


Digunakan untuk menghitung interval antara dua tanggal. Contoh:
Dim beda As Integer
beda = DateDiff(“d”, “03/31/2004”, “04/31/2004”)
maka beda akan berisi selisih hari dari tanggal 31 Maret ke 31 April

f. Fungsi Date Formatting


Format (now, “hh:mm:ss”)
Format (now, “mm:dd:yy” atau “mm/dd/yy” atau “mm-dd-yy”)
Format (now, “dddd-mmmm-yyyy”)
Format (now, “hh:mm:ss ampm”)

g. Fungsi Now, Time, Date


Now dipakai untuk menampilkan jam dan tanggal saat ini.
Time dipakai untuk menampilkan waktu saat ini.
Date dipakai untuk menampilkan tanggal saat ini.

h. Fungsi DatePart(interval, date)


Digunakan untuk mengambil bagian tertentu dari suatu tanggal. Interval
sama dengan tabel pada fungsi DateAdd. Contoh
X = DatePart(“d”, “03/31/2004”)
Maka X akan bernilai 31
18

BAB 6
VALIDASI & ERROR HANDLING

Di dalam Visual Basic kita dapat menangkap dan menangani error yang
mungkin terjadi karena kesalahan program sehingga lebih user friendly. Sebagai
contoh, coding berikut akan meng-generate sebuah error.

Di dalam Visual Basic kita dapat menangkap dan menangani error yang
mungkin terjadi karena kesalahan program sehingga lebih user friendly. Sebagai
contoh, coding berikut akan meng-generate sebuah error.
Private Sub Form_Load() Dim a As Byte
a = 300 „ tidak mungkin, sebab byte harus < 256
End Sub
Jika program tersebut dijalankan maka akan muncul pesan error. Untuk
membuatnya lebih user friendly maka kita dapat menggunakan perintah On
Error Goto (Label) Dengan demikian, jika terjadi error maka program akan
langung membaca perintah setelah label yang dimaksud. Dapat juga digunakan
perintah On Error Resume Next

Contoh:
Private Sub Form_Load()
On Error goto ErrHandle
Dim a As Byte
a = 300 „ Karena error langsung tampilkan pesan error
Exit Sub
ErrHandle:
MsgBox “An Error Occured!”
End Sub
Private Sub Form_Load()
On Error Resume Next
Dim a As Byte
a = 300 „ Karena error langsung exit sub
Exit Sub
ErrHandle:
MsgBox Err.Number & Err.Description, , “Pesan Error”
End Sub

Jika kita malas untuk menangani kermungkinan error yang terjadi, maka kita
dapat menulis On Error Goto 0. Dengan perintah ini segala error yang terjadi
akan diabaikan oleh Visual Basic.
19

Kita juga dapat menyimpan error yang terjadi pada program untuk dokumentasi
dan informasi untuk perbaikan. Berikut adalah contoh sederhana untuk mencatat
error ke dalam suatu file:
Public Sub CatatError(iNoErr As Integer, sDesc As _
String, sSource As String, sData As String, sPath _
As String)
Dim F As Integer
F = FreeFile
Open sPath For Append As #F
Print #F, "Error Number: " & iErrNum
Print #F, "Description: " & sDesc
Print #F, "Source: " & sSource
Print #F, "Date: " & Date
Print #F, ""
Close #F
End Sub
Prosedur diatas dapat kita panggil dengan cara berikut:
WriteError Err.Number, Err.Description, Err.Source, _
Now, App.path & "\Err.log"
Error dapat terjadi karena kesalahan program yang kita buat atau kesalahan
input dari user. Untuk itu validasi juga diperlukan untuk mencegah input-input
tertentu yang memungkinkan terjadinya error. Validasi juga beraneka ragam,
misalnya kita membatasi range data, melakukan validasi input keyboard, dsb.
Berikut contoh bagaimana melakukan validasi input keyboard.
„ Bila jumlah karakter harus 10, misalnya untuk NIM
Private Sub Textbox1_KeyPress (KeyAscii As Integer)
If Len(Textbox1.Text) > 10 And keyascii = 13 Then
......
End If
End Sub
„ Bila input hanya boleh angka
Private Sub Textbox1_KeyDown(KeyCode As Integer, _
Shift As Integer)
If Keycode>=48 And KeyCode<=57 Then Exit sub
End Sub
„ Cara lain untuk validasi input tertentu
Private Sub Textbox1_KeyPress (KeyAscii As Integer)
Select Case KeyAscii
Case 48 To 57 „ Untuk angka 0-9
Case 65 To 90 „ Untuk huruf besar A-Z
Case 8, 13, 32 „ Untuk Backspace, Enter, Spasi
Case Else
KeyAscii=0
End Select
End Sub
20

BAB 7
WINDOWS APPLICATION PROGRAMMING
INTERFACE (Win32 API)

Windows API adalah fungsi-fungsi untuk aplikasi windows. Digunakan


untuk memanipulasi sistem Windows. Misalnya membuat form dalam bentuk
ellips. Windows API merupakan library yang berisi fungsi-fungsi yang embedded
dalam suatu Dynamic Link Library atau EXE antara lain:
1. GDI.exe atau GDI32.dll
Berisi kumpulan fungsi untuk manipulasi grafik (Graphic Device Interface)
2. User.exe atau User32.dll
Berisi kumpulan fungsi untuk User Interface, seperti mouse, kursor, dan
icon
3. Kernel (Krnl286.exe, Krnl386.exe, atau Kernel32.dll)
Berisi fungsi-fungsi untuk manajemen memori, resource control,
multitasking, dll.
21

Fungsi API dapat dideklarasikan dalam sebuah modul atau dalam code
window form tapi umumnya dideklarasikan dalam sebuah modul dalam level
public. Jika dalam form, maka harus dideklarasikan private. Berikut adalah
bentuk pendeklarasian fungsi DLL:
[Public/Private] Declare Function nama_fungsi LIB “nama_file_dll” [Alias
“nama_alias”] ([parameter]) As tipe_data

Berikut adalah bentuk pendeklarasian prosedur DLL:


[Public/Private] Declare Sub nama_prodedur LIB “nama_file_dll” [Alias
“nama_alias”] ([parameter])

Fungsi Windows API dapat kita lihat dengan API Viewer seperti pada gambar
diatas setelah membuka file Win32api.txt. Disini kita tidak membahas terlalu jauh
mengenai windows API. Berikut beberapa fungsi API yang umum antara lain:
Fungsi/Prosedur Keterangan
CloseWindow Minimize window
CreateEllipticRgn Membuat form ellips
CreateRoundRectRgn Membuat form dengan sudut bulat
FindWindow Mendapatkan handle window dari nama window
GetCursorPos Mengambil posisi mouse
GetDiskFreeSpace Mendapatkan sisa space pada harddisk
GetSystemDirectory Mendapatkan direktori sistem
GetSystemMenu Mendapatkan handle dari menu
GetSystemTime Setting waktu sistem
GetTempPath Mendapatkan direktori temp
GetWindowRect Mendapatkan batas window dalam segi empat
GetWindowsDirectory Mendapatkan direktori windows
ReleaseCapture Melepaskan capture mouse dari form
SendMessage Mengirim pesan ke window
SetCursorPos Mengatur posisi mouse
SetFocusAPI Memindahkan fokus
SetWindowPos Mengatur posisi order form
SetWindowRgn Menset nilai region window
SndPlaysound Memainkan suara sesuai file wav
SwapMouseButton Mengubah tombol mouse
Untuk pendeklarasiannya dapat dilihat pada API Viewer. Berikut contoh
penggunaan API. Kita akan membuat form berbentuk ellips dan posisi form on
top dimana form dapat dipindahkan tanpa titlebar.

Buka program VB anda dan pilih Standard EXE. Set properti


form seperti dibawah ini:
Borderstyle = none
ScaleMode = Pixel
Caption = Form Ellips
22

StartupPosition = CenterScreen
ShowInTaskBar = True
Buka code window form dan tambahkan kode berikut.
Private Declare Function CreateEllipticRgn Lib "gdi32" _
(ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, _
ByVal Y2 As Long) As Long
Private Declare Function SetWindowPos Lib "user32" _
(ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _
ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" _
(ByVal hwnd As Long, ByVal hRgn As Long, _
ByVal bRedraw As Boolean) As Long
Private Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
Private Declare Function ReleaseCapture _
Lib "user32" () As Long
Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1
Sub PindahForm(ObjForm As Form)
ReleaseCapture
SendMessage ObjForm.hwnd, WM_NCLBUTTONDOWN, _
HTCAPTION, 0
End Sub
Private Sub CmdExit_Click()
End
End Sub
Private Sub CmdNormal_Click()
Call SetWindowPos(Me.hwnd, HWND_NOTOPMOST, 0, 0, _
0, 0, SWP_NOMOVE + SWP_NOSIZE)
End Sub
Private Sub CmdOnTop_Click()
Call SetWindowPos(Me.hwnd, HWND_TOPMOST, 0, 0, _
0, 0, SWP_NOMOVE + SWP_NOSIZE)
End Sub
23

Private Sub Form_Load()


Dim bForm As Long
bForm = CreateEllipticRgn(0, 0, _
Me.ScaleWidth, Me.ScaleHeight)
Call SetWindowRgn(Me.hwnd, bForm, True)
End Sub
Private Sub Form_MouseDown(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then PindahForm Me
End Sub

Contoh lain misalnya untuk mendapatkan direktori temp. Buka Notepad dan ketik
kode berikut ini kemudian save dengan ekstensi namafile.bas
Buka dengan VB. Set Properti startup menjadi sub main. Bila program dijalankan
maka sebuah message box akan muncul menampilkan path direktori temp anda.

Attribute VB_Name = "Module1"


Declare Function GetTempPath Lib "kernel32" _
Alias "GetTempPathA" (ByVal nBufferLength As Long, _
ByVal lpBuffer As String) As Long

Function TempDir() As String


Dim sTemp As String * 255
TempDir = Left(sTemp, GetTempPath(255, sTemp))
End Function

Sub main()
MsgBox “Direktori Temp Anda: “ & TempDir, vbInformation
End Sub
24

BAB 8
DIALOG CONTROL DAN MENU

Common Dialog Control

Common Dialog control adalah salah satu komponen eksternal VB yang


berfungsi untuk menampilkan jendela color, font, printer, file open, file save dan
menampilkan help file.
1. FileOpen window
Dipanggil dengan method showopen, yaitu:
Commondialog1.showopen
Beberapa properti yang berhubungan dengan window ini adalah:
 Initdir, Property yang ditunjuk saat fileopen dibuka, contoh:
Commondialog1.initdir = “C:\”
 Filter, Property untuk menyaring daftar file yang ditampilkan, contoh:
Commondialog1.filter = “JPEG|*.jpg|All|*.*”
 Flag, Properti ini contohnya:
Commondialog1.flags = cdlOFNAllowMultiSelect
 Filename, properti yang berisi nama file yang dipilih user.

2. FileSave window
Ditampilkan dengan perintah showsave, yaitu:
Commondialog1.showsave
Contoh:
Commondialog1.dialogtitle = “Save File”
Commondialog1.filename = “*.txt”
Commondialog1.filter = “*.*”
Commondialog1.showsave

3. Color window
Untuk membuka jendela color, yaitu:
Commondialog1.showcolor
Contoh:
Commondialog1.showcolor
LblLabel.Forecolor = Commondialog1.color

4. Font window
Menampilkan daftar font yang ada, yaitu dengan cara:
Commondialog1.showfont
25

Contoh:
Commondialog1.flags = cdlCFBoth
Commondialog1.showfont
Flag diisi cdlCFBoth agar semua font baik font true type, font layar, dan font
printer ditampilkan. Penggunaannya adalah:
Label1.Font.Size = Commondialog1.FontSize
Label1.Font.Bold = Commondialog1.FontBold
Label1.Font.Name = Commondialog1.FontName

5. Printer
Digunakan untuk menampilkan kotak dialog printer.
Commondialog1.ShowPrinter

6. Help
Dengan method showhelp kita dapat menampilkan help dengan mudah.
Contoh:
Commondialog1.helpfile = “C:\Windows\Help\win.hlp”
Commondialog1.showhelp

Berikut adalah lampiran nilai flag untuk masing-masing dialog:


Konstanta Flag untuk Dialog Help

Constant Value Description


cdlHelpCommandHelp &H102 Menampilkan Help untuk a perintah
khusus
cdlHelpContents &H3 Menampilkan topik pada file Help
cdlHelpContext &H1 Menampilkan Help untuk topik tertentu
cdlHelpContextPopup &H8 Menampilkan topik yang diidentifikasi
dengan nomor konteks
cdlHelpForceFile &H9 Membuat file Help yang menampilkan
teks hanya dengan satu font
cdlHelpHelpOnHelp &H4 Menampilkan Help untuk memakai
aplikasi Helpnya sendiri
cdlHelpIndex &H3 Menampilkan indeks dari file Help
cdlHelpKey &H101 Menampilkan Help sesuai keyword
cdlHelpPartialKey &H105 Memanggil search engine Help Windows
cdlHelpQuit &H2 Notifikasi aplikasi Help yang tak lagi
dipakai file Help yang ditentukan
cdlHelpSetContents &H5 Menunjukkan topik specifik sebagai topik
isi
cdlHelpSetIndex &H5 Set indeks sekarang untuk Help multi-
index
26

Konstanta Flag untuk Dialog Printer

Constant Value Description


cdlPDAllPages &H0 Mengembalikan atau menset
option All Pages.
cdlPDCollate &H10 Mengembalikan atau menset
check box Collate.
cdlPDDisablePrintToFile &H80000 Disable check box Print To File.
cdlPDHelpButton &H800 Menampilkan tombol help
cdlPDHidePrintToFile &H100000 Menyembunyikan check box Print
To File.
cdlPDNoPageNums &H8 Disable option button Pages dan
kontrol edit yang berhubungan.
cdlPDNoSelection &H4 Disable option button Selection.
cdlPDNoWarning &H80 Mencegah pesan peringatan saat
tidak ada printer default.
cdlPDPageNums &H2 Mengembalikan atau menset
option Pages.
cdlPDPrintSetup &H40 Menampilkan Print Setup dialog
cdlPDPrintToFile &H20 Mengembalikan atau menset
check box Print To File.
cdlPDReturnDC &H100 Mengembalikan device context
untuk seleksi printer dalam kotak
dialog. Device context
dikembalikan dalam properti hDC
kotak dialog.
cdlPDReturnDefault &H400 Mengembalikan nama printer
default.
cdlPDReturnIC &H200 Mengembalikan info konteks
untuk seleksi printer dalam kotak
dialog. Information konteks
menyediakan cara yang cepat
untuk mendapatkan info tentang
device tanpa membuat device
context. Information konteks
dikembalikan dalam properti hDC
kotak dialog.
cdlPDSelection &H1 Mengembalikan/menset option
selection. Jika cdlPDPageNums
dan cdlPDSelection ditentukan,
semua option button akan dipilih.
cdlPDUseDevModeCopies &H40000 Jika driver printer tidak
mendukung multiple copies,
setting flag ini mendisable kontrol
copies edit. Jika sebaliknya, maka
27

setting flag ini mengindikasikan


bahwa kotak dialog menyimpan
jumlah copy dalam properti
Copies.

Konstanta Flag untuk Dialog Font

Constant Value Description


cdlCFANSIOnly &H400 Menentukan bahwa kotak dialog hanya
membolehkan pilihan font yang memakai
set karakter Windows. Jika flag ini diset,
user tidak dapat memilih font yang hanya
berisi simbol.
cdlCFApply &H200 Enable tombol Apply pada dialog.
cdlCFBoth &H3 Menyebabkan kotak dialog untuk daftar
font printer dan layar. Properti hDC
mengidentifikasi device context yang
berasosiasi dengan printer.
cdlCFEffects &H100 Enable efek strikethrough, underline, dan
warna.
cdlCFFixedPitchOnly &H4000 Menentukan bahwa kotak dialog hanya
memilih font fixed-pitch.
cdlCFForceFontExist &H10000 Memunculkan pesan error jika user
mencoba memilih font atau style yang
tidak ada.
cdlCFHelpButton &H4 Menampilkan tombol Help.
cdlCFLimitSize &H2000 Menentukan bahwa kotak dialog hanya
memilih ukuran font dalam range yang
ditentukan dalam properti Min dan Max.
cdlCFNoFaceSel &H80000 Tidak ada pilihan nama font.
cdlCFNoSimulations &H1000 Menentukan kotak dialog box agar tidak
membolehkan simulasi font graphic
device interface (GDI).
cdlCFNoSizeSel &H200000 Tidak ada pilihan ukuran font.
cdlCFNoStyleSel &H100000 Tidak ada pilihan style
cdlCFNoVectorFonts &H800 Menentukan bahwa kotak dialog tidak
membolehkan pilihan vector-font.
cdlCFPrinterFonts &H2 Menyebabkan kotak dialog hanya
mendaftar font yang didukung oleh
printer, ditentukan dengan properti hDC.
cdlCFScalableOnly &H20000 Menentukan bahwa kotak dialog hanya
membolehkan pilihan font yang dapat
diskala.
cdlCFScreenFonts &H1 Menyebabkan kotak dialog box hanya
mendaftar font layar yang didukung oleh
28

sistem.
cdlCFTTOnly &H40000 Menentukan bahwa kotak dialog hanya
membolehkan pilihan font TrueType.
cdlCFWYSIWYG &H8000 Menentukan bahwa kotak dialog hanya
membolehkan pilihan font yang ada pada
printer dan layar. Jika flag ini diset, flag
cdlCFBoth dan cdlCFScalableOnly juga
harus diset.

Konstanta Flag untuk Dialog Open dan Save

Constant Value Description


cdlOFNAllowMultiselect &H200 Menentukan bahwa list box File
Name membolehkan seleksi yang
banyak. User dapat memilih lebih
dari satu file saat run time dengan
menekan SHIFT dan PANAH
ATAS atau BAWAH untuk memilih
file yang diinginkan. Properti
FileName mengembalikan string
berisi nama semua file yang
dipilih. Nama dalam string
dipisahkan dengan spasi.
cdlOFNCreatePrompt &H2000 Menentukan bahwa kotak dialog
menanyakan user untuk membuat
file yang belum ada. Flag ini
menset secara otomatis flag
cdlOFNPathMustExist dan
cdlOFNFileMustExist.
cdlOFNExplorer &H80000 Mengunakan template kotak dialog
buka file yang mirip dengan
Explorer. Common dialogs yang
memakai flag ini tidak jalan
dibawah Windows NT memakai
shell Windows 95.
CdlOFNExtensionDifferent &H400 Indikasi bahwa ekstensi dari nama
file yang dikembalikan berbeda
dengan ekstensiyang ditentukan
dalam properti DefaultExt. Flag ini
tak diset jika properti DefaultExt
kosong, jika ekstensi sesuai, atau
jika file tidak berekstensi. Flag ini
dapat dipilih saat menutup kotak
dialog.
cdlOFNFileMustExist &H1000 User hanya dapat menginput
nama file yang sudah ada dalam
29

text box File Name. Jika flag ini


diset dan user menginput nama
file yang tak valid, pesan
peringatan akan tampil. Flag ini
menset secara otomatis flag
cdlOFNPathMustExist.
cdlOFNHelpButton &H10 Menampilkan tombol Help.
cdlOFNHideReadOnly &H4 Menyembunyikan check box Read
Only.
cdlOFNLongNames &H200000 Use long filenames.
cdlOFNNoChangeDir &H8 Menset directori saat ini
sebagaimana ketika kotak dialog
dibuka.
CdlOFNNoDereferenceLinks &H100000 Tidak boleh dereferensi link shell
(dikenal sebagai shortcuts).
Secara default, memilih link shell
menyebabkan dereferensi oleh
shell.
cdlOFNNoLongNames &H40000 Disable penggunaan nama file
panjang.
CdlOFNNoReadOnlyReturn &H8000 Menentukan bahwa file kembalian
tidak memiliki atribut Read Only
dan tidak pada direktori yang
bersifat write-protected.
cdlOFNNoValidate &H100 Menentukan bahwa common
dialog box memperbolehkan
karakter yang tak valid dalam nilai
kembalian nama file.
cdlOFNOverwritePrompt &H2 Menampilkan pesan konfirmasi
bila file sudah ada apakah harus
ditulis ulang.
cdlOFNPathMustExist &H800 Hanya bisa menginput path yang
paths. Jika flag ini diset dan user
memasukkan path yang tidak
valid, maka akan muncul pesan
peringatan.
cdlOFNReadOnly &H1 Menentukan agar check box Read
Only dipilih saat kotak dialog
dibuat. Flag ini juga mengindikasi
kondisi check box Read Only saat
kotak dialog ditutup.
CdlOFNShareAware &H4000 Mengabaikan error pelanggaran
sharing.

Konstanta untuk Dialog Color


30

Constant Value Description


cdlCCFullOpen &H2 Menampilkan kotak dialog secara
lengkap
cdlCCShowHelp &H8 Menampilkan tombol Help pada dialog
cdlCCPreventFullOpen &H4 Disable tombol Define Custom Colors
dan mencegah user menentukan warna
sendiri
cdlCCRGBInit &H1 Set warna inisial untuk kotak dialog

Menu

Menu adalah suatu interface yang memudahkan user untuk mengakses


fungsi / form dalam aplikasi secara mudah. Menu ada dua yaitu Popup dan biasa.
Dalam Visual Basic, menu dapat dibuat dengan mudah dengan tools
menu editor yang disediakan didalamnya.

Properti pada menu editor

Nama Keterangan
Caption Teks yang terlihat
Name Nama dalam kode
Checked Tanda check pada bagian kiri menu
Visible Menu terlihat atau tidak
Enabled Jika FALSE, menu tidak dapat dipilih.
Index Jika menu bagian dari control array.
Shortcut Key untuk mengakses menu
HelpContextID Topil dalam file help
NegotiatePosition Dengan OLE untuk menentukan menu
yang tampil.
WindowList Menu control menyimpan daftar window
MDI Child.

Cara membuat menu.


31

Untuk membuat menu Popup cukup hilangkan visible pada menu dan gunakan
syntax :
Popupmenu <Nama menu>
Misalnya saat klik kanan maka:

Private sub Form_MouseDown(Button As Integer, Shift As


Integer, X As Single, Y As Single)
If Button = vbRightButton Then „ vbRightButton = 2
PopupMenu mnuMenu
End if
End Sub
32

BAB 9
COMPONENT (OCX) DAN CLASS MODULE

Component
Visual Basic juga menyediakan fitur untuk membuat komponen sendiri.
Komponen dalam VB dikenal dengan istilah ActiveX Control / Component yang
biasanya berekstensi OCX atau DLL. Caranya adalah saat pertama kali VB
dijalankan pilih ActiveX Control. Misalnya kita akan membuat sebuah komponen
yang dapat menampilkan tanggal dan waktu saat ini.

Jalankan VB anda, pilih ActiveX control. Masukkan sebuah label dan sebuah
timer pada usercontrol anda. Set properti seperti berikut:
Timer
Properti Nilai
Name TmrDate
Interval 1000
Label
Properti Nilai
Name LblDate
Alignment Center
Caption (kosongkan)
Autosize True
Samakan ukuran label dengan usercontrol. Kemudian buka code window dan
tambahkan kode berikut:
Private dtTipe As TipeDateTime
Public Enum TipeDateTime
Waktu = 0
Tanggal = 1
Keduanya = 2
End Enum
Public Property Get WarnaTulisan() As OLE_COLOR
WarnaTulisan = lblDate.ForeColor
End Property
Public Property Let WarnaTulisan(ColorVal As OLE_COLOR)
lblDate.ForeColor = ColorVal
End Property
33

Public Property Get Tipe() As TipeDateTime


Tipe = dtTipe
End Property
Public Property Let Tipe(TdtTipe As TipeDateTime)
dtTipe = TdtTipe
End Property
Private Sub Tmrdate_Timer()
Select Case dtTipe
Case Keduanya
lblDate.Caption = Format(Now, "dd mmmm yyyy, _
hh:mm:ss")
Case Waktu
lblDate.Caption = Format(Now, "hh:mm:ss")
Case Tanggal
lblDate.Caption = Format(Now, "dd mmmm yyyy")
End Select
End Sub
Private Sub UserControl_Resize()
lblDate.Top = (UserControl.Height - lblDate.Height) / 2
lblDate.Left = (UserControl.Width - lblDate.Width) / 2
End Sub
Private Sub UserControl_InitProperties()
Tipe = Keduanya
End Sub
Private Sub UserControl_ReadProperties _
(PropBag As PropertyBag)
With PropBag
lblDate.ForeColor = .ReadProperty("WarnaTulisan")
dtTipe = .ReadProperty("Tipe")
End With
End Sub
Private Sub UserControl_WriteProperties _
(PropBag As PropertyBag)
With PropBag
.WriteProperty "Tipe", dtTipe
.WriteProperty "WarnaTulisan", WarnaTulisan
End With
End Sub

Untuk mentest komponen ini, buat project baru standard exe. Tambahkan
komponen ini. Dan drag ke form. Anda bisa menemukan telah muncul 2 properti
yang kita buat yaitu WarnaTulisan dan Tipe. Perintah Get dan Let adalah
sepasang dan digunakan untuk mendefenisikan property yang akan kita buat,
demikian juga dengan WriteProperties dan ReadProperties. Keduanya juga
sepasang digunakan untuk menangani property yang kita buat.
34

Kita juga dapat menambahkan event pada kontrol kita dengan mendeklarasikan
nama event dengan kata kunci Event dan RaiseEvent. Contoh:

Event Click() „ Letakkan di bagian deklarasi general


RaiseEvent Click „ Diletakkan ditempat dimana event akan
„ di-generate misalnya saat tombol diklik

Class Module
Memang Visual Basic bukan bahasa pemograman berorientasi object
murni, karena tidak mendukung Inheritance. Namun, dengan class kita dapat
mengorganisasikan kode program kita terutama untuk reusability. Kita akan
mencoba untuk membuat sebuah class sederhana. Bukalah menu project dan
pilih add class module. Secara default, class module yang pertama akan diberi
nama Class1. Kita harus menggantinya agar sesuai dengan class yang akan kita
buat. Misalnya kita ingin membuat suatu objek orang. Kita namakan COrang.
Ketikkan baris kode berikut dalam class module.
Option Explicit
Public Nama As String
Public Umur As String

Kemudian pada modul form, ketikkan kode berikut.


Private Sub Form_Load()
Dim Orang As COrang „ Deklarasi Object
Set Orang = New COrang „ Create Object
Orang.Nama = inputbox(“Masukkan Nama:”) „ Assign
Orang.Umur = inputbox(“Masukkan Umur:”) „ properti
Print Orang.Nama & “ berumur “ & Orang.Umur
End Sub

Create Object
Dengan class kita tak dapat menggunakan variabel secara langsung
setelah deklarasi. Kita harus mengalokasi sendiri sebuah objek ke memory
sebelum kita dapat menggunakan method atau memberi nilai pada propertinya.
Jika bagian Set Orang = New COrang kita hilangkan maka akan muncul pesan
error yang berbunyi : „Object variable or With Block variable not set”. Kita dapat
menghilangkan error ini dengan menggunakan is nothing.
If not (Orang Is Nothing) then
Print Orang.Nama & “berumur “ & Orang.Umur
End if
Untuk membuat objek ada 2 cara yaitu: seperti contoh diatas atau dengan auto
instancing.
Dim Orang As New COrang
35

Property Procedure
Sekarang kita akan ubah contoh diatas dan melakukan enkapsulasi
terhadap data. Ketikkan baris berikut pada class modul.
Option Explicit
Private m_Nama As String „ Public diubah menjadi Private
Private m_Umur As String
„ Property Prosedure secara default adalah Public
Property Get Nama() As String
Nama = m_Nama
End Property
Property Let Nama(ByVal Str As String)
If Str = “” then Error.Raise 5
„ Error 5 = Invalid Procedure Argument
m_Nama = Str
End Property
Property Get Umur() As String
Umur = m_Umur
End Property
Property Let Umur(ByVal Str As String)
If Str = “” then Error.Raise 5
„ Error 5 = Invalid Procedure Argument
m_Umur = Str
End Property
Sekarang kita tak dapat langsung mengassign Orang.m_Nama = “...” tetapi kita
harus melakukannya melalui property prosedure. Jika kita tidak mengisi maka
akan muncul pesan error saat dijalankan.

Method
Class module juga dapat berisi sub atau function yan dikenal dengan
nama method.Misalnya untuk contoh diatas. Tambahkan kode berikut dalam
class module.
Function Data() As String
Data = m_Nama & “ berumur “ & m_Umur
End Function
Pada modul form,
Private Sub Form_Load()
Dim Orang As New COrang
Orang.Nama = Inputbox(“Masukkan Nama:”) „ Assign
Orang.Umur = Inputbox(“Masukkan Umur:”) „ properti
Print Orang.Data
End Sub
36

BAB 10
DATA ACCESS INTERFACE

Dalam Visual basic terdapat 3 jenis Data Access Inteface (Fasilitas mengakses
data), yaitu:
Data Access Objects (DAO)
DAO menyediakan dua cara dasar untuk mengakses data :
1. Microsoft Joint Engine Technology (Jet) yang dapat mengakses data source
seperti Microsoft Access, Foxpro, Paradox atau Lotus 1-2-3.
2. ODBCDirect yang dapat langsung mengakses remote database server
tanpa Microsoft Jet database engine. ODBCDirect ini mempunyai kinerja
yang lebih bagus dan juga memerlukan memori yang lebih kecil.

ODBCDirect adalah bagian dari DAO 3.5 object library, dan merupakan
perluasan dari DAO. Keterbatasan terbesar DAO adalah kenyataan bahwa DAO
tidak memiliki fasilitas untuk dihubungkan ke remote database, seperti pada
sistem client/server. Sedangkan ODBCDirect secara fungsional menyediakan
fasilitas ini, namun kurang efisien. DAO dirancang hanya untuk berhubungan
dengan databases dan tidak dapat mengakses data lainnya, seperti pada sistem
email.

Remote Data Objects (RDO)


Model pemrograman RDO hampir mirip dengan model DAO. RDO
dirancang untuk beroperasi dengan database client/server. RDO memanfaatkan
kemampuan database servers menggunakan query engines yang rumit, seperti
SQL server dan Oracle. Keterbatasan RDO yaitu tidak dapat mengakses desktop
database secara efisien.

ActiveX Data Objects (ADO)


ADO adalah teknologi akses data terbaru Microsoft dan adalah interface
dari OLE DB. OLE DB adalah interface strategi tingkat rendah Microsoft terhadap
segala jenis data yang dikenal dengan konsep Universal Data Access (UDA).
Sebagai contoh, OLE DB dan ADO menyediakan interface yang sama bagi
developer tetapi tidak hanya mengakses data dari database yang berhubungan
maupun tidak, tetapi juga data sources lainnya, seperti email, sistem file, tools
project management, dan spreadsheets. OLE DB dirancang untuk membangun
ODBC dengan menyediakan standar terbuka dalam mengakses segala jenis
data. OLE DB tidak menggunakan maupun memerlukan ODBC.
37

OLEDB dan ADO

OLE DB adalah set interface yang menyediakan aplikasi seragam dalam


mengakses data yang disimpan di sumber informasi yang berlainan tanpa
tergantung pada lokasi maupun tipe. Umumnya, OLE DB cenderung
mempermudah aplikasi-aplikasi dalam mengakses data yang tersimpan pada
DBMS (Database Management System) dan sumber-sumber informasi lainnya.
Sumber-sumber DBMS antara lain:
1. Mainframe Database seperti IMS dan DB2
2. Server Database seperti Oracle dan SQL Server
3. Desktop Database seperti Access, Paradox dan Foxpro

Sumber-sumber lain antara lain:


Informasi yang tersimpan pada file system untuk Windows NT atau UNIX File
Indexed-sequential, Sistem Email seperti Exchange, Spreadsheets, tool project
management, dan sumber-sumber lainnya.

Biasanya aplikasi yang berbasis ADO menggunakan operasi-operasi untuk


mengakses data sourcenya dengan cara sebagai berikut :
1. Create the Connection Object, Menggunakan connection string tertentu yang
mengandung informasi seperti nama data source, identifikasi user dan
passwordnya.
2. Open the Connection, Membuka connection ADO ke data sourcenya.
3. Execute an SQL statement, Begitu connectionnya terhubung, maka
selanjutnya adalah menjalankan suatu query, yaitu tabel(-tabel) yang akan
dibuka.
4. Use the records returned from the query, Sekarang record-recordnya siap
untuk dibrowse maupun diupdate. Kita dapat menambahkan, mengupdate,
menghapus data pada recordset tergantung dari tipe cursornya. Cursor
adalah tabel temporari pada memori yang mengandung hasil dari query kita
sebelumnya.
5. Terminate the connection, Koneksi ke data source diputuskan.

Berikut adalah perbedaan connection string untuk setiap jenis OLEDB Provider:
OLEDB Provider Connection String
Microsoft Jet “Provider = Microsoft.Jet.Oledb.4.0; Data Source =
(Access) namadb.mdb”
“Provider=MSDASQL.1;UID=admin; Extended
Ms ODBC Driver Properties=”DBQ=c:\Program files\Microsoft Visual
Studio\VB98\NWIND.MDB;FIL=MS Access;”
“Provider = MSDAORA; Data Source =
Oracle
NmServer;UserID = Stefan; Password = 123456”
“Provider=SQLOLEDB.1;Persist Security
SQL Server Info=False;User ID=sa;Initial Catalog=Proyek;Data
Source=Stefan”
38

Tabel di bawah ini menggambarkan event-event yang berhubungan dengan


objek connection:
Event Keterangan
AbortTransaction Terjadi setelah method RollbackTrans dipanggil.
BeginTransaction Terjadi setelah method BeginTrans dipanggil.
CommitTransaction Terjadi setelah method CommitTrans dipanggil.
ConnectComplete Terjadi saat koneksi yang dicoba berhasil, gagal, atau
timed out.
Disconnect Terjadi saat sebuah koneksi yang aktif ditutup.
ExecuteComplex Terjadi setelah method Execute dipanggil.
Info Message Terjadi saat message dikembalikan dari OLE DB atau
data source.
WillConnect Terjadi setelah method Open dipanggil, tetapi
sebelum koneksi dibuat.
WillExecute Terjadi setelah method Execute dipanggil, tetapi
sebelum perintah selesai.

Untuk menggunakan teknologi ini maka seseorang harus melakukan setting


terlebih dahulu. Berikut ini adalah aturan penggunaan dari ADO.
1. Pilih menu Project
2. Pilih References
3. Pilih Microsoft ActiveX Data Objects 2.x Library

Kita juga bisa menggunakan ADO Control, caranya adalah:


1. Pilih menu Project
2. Pilih Component
3. Pilih Microsoft ADO Data Control 6.0 (OLE DB)
Secara umum, setiap database dibuka dengan method Open:
Object.Open Source, ActiveConnection, CursorType, LockType,
Options

Source berisi perintah untuk mengakses data dalam database.


ActiveConnection berisi sumber data dari source. Yaitu koneksi ke file database.

Argument Description
Data Argumen ini menentukan nama data source untuk koneksi.
Source Bersifat optional saat dipakai dengan OLE DB Provider
untuk AS/400 & VSAM atau OLE Provider untuk DB2.
File Name Argumen ini menentukan nama file provider specifik yang
berisi info preset koneksi. Argument ini tak bisa dipakai jika
argumen Provider dilewati. Tak didukung oleh OLE DB
Provider untuk AS/400 & VSAM.
Location Argumen ini menentukan nama Remote Database yang
digunakan untuk koneksi ke sistem OS/400. Parameter ini
39

bersifat optional untuk koneksi ke sistem mainframe.


Password Argumen ini menentukan validitas password mainframe atau
AS/400 saat membuka koneksi. Password ini dipakai oleh
Microsoft® SNA Server untuk validasi user yang log on ke
sistem host tujuan dan memiliki hak akses file yang sesuai.
Provider Argument ini menentukan nama provider yang dipakai
koneksi. Pada OLE DB Provider untuk AS/400 & VSAM,
string Provider harus di set "SNAOLEDB". Pada OLE DB
Provider untuk DB2, string Provider harus di set menjadi
"DB2OLEDB". Pada ODBC Driver untuk DB2, Provider di
set "MSDASQL" atau tak dipakai sebagai bagian dari
ConnectionString sejak nilai ini di default untuk ADO.
Remote Argumen ini menentukan nama provider untuk dipakai saat
Provider membuka koneksi client-side (hanya untuk layanan Remote
data). Tidak didukung oleh OLE DB Provider untuk AS/400
& VSAM maupun OLE DB Provider untuk DB2.
Remote Argumen ini menentukan nama path server yang dipakai
Server saat membuka koneksi client-side (hanya untuk layanan
Remote Data). Tidak didukung oleh OLE DB Provider untuk
AS/400 & VSAM maupun OLE DB Provider untuk DB2.
User ID Argumen ini menentukan nama user yang valid pada
mainframe atau AS/400 saat membuka koneksi. Nama user
ini dipakai oleh SNA Server untuk validasi user apakah
dapat log on ke sistem tujuan dan memiliki hak akses file.

CursorType menset nilai CursorTypeEnum yang menenetukan tipe kursor yang


digunakan saat membuka Recordset.

Enumeration Value Description


adOpenUnspecified -1 Mengindikasikan nilai unspecified untuk
CursorType. Nilai ini tak didukung pada
OLE DB Provider untuk AS/400 & VSAM.
adOpenForwardOnly 0 Bila nilai ini diset maka kursor / pointer
record hanya bisa maju dan tidak dapat
kembali ke record sebelumnya. Pada
OLE DB Provider untuk AS/400 & VSAM
cursor ini dipetakan ke adOpenDynamic.
adOpenKeyset 1 Membuka database dengan pemberian
lock pada user. Jika seorang user sedang
mengupdate maka user lain tidak dapat
mengupdate dan harus menunggu
sampai user itu selesai. User dapat
melihat perubahan data tapi tidak dapat
melihat penambahan data. Nilai ini tak
didukung pada OLE DB Provider untuk
AS/400 & VSAM.
40

adOpenDynamic 2 Dengan cursor ini, penambahan,


perubahan, dan penghapusan data oleh
user lain akan terlihat oleh user lain, dan
semua tipe pergerakan yang melalui
recordset diperbolehkan, kecuali
bookmark jika providernya tak
mendukung. User juga dapat melakukan
perubahan terhadap data pada waktu
yang bersamaan. Ini adalah CursorType
satu-satunya yag didukung oleh OLE DB
Provider untuk AS/400 & VSAM.
adOpenStatic 3 Jika ada user yang mengupdate data
maka user lain tidak dapat melihat
perubahan data. User lain juga tak dapat
mengubah data tersebut pada waktu
yang sama. Nilai ini tak didukung pada
OLE DB Provider untuk AS/400 & VSAM.

LockType menset nilai LockTypeEnum untuk mengatur concurrency saat


membuka recordset. Secara default di set adLockReadOnly

Enumeration Value Description


adLockUnspecified -1 Set nilai unspecified untuk LockType.
Nilai ini tak didukung pada OLE DB
Provider untuk AS/400 & VSAM.
adLockReadOnly 1 Membuka Recordset object dengan
atribut read-only dan data tak dapat
diubah.
adLockPessimistic 2 Membuka recordset dengan
pessimistic locking. Record-by-record,
OLE DB Provider melakukan apa
yang penting untuk memastikan
berhasilnya editing pada records,
biasanya dengan mengunci records
pada data source dengan segera
ketika editing.
adLockOptimistic 3 Membuka recordset dengan optimistic
locking. Record-by-record, OLE DB
Provider hanya mengunci records
saat Update dilakukan.
adLockBatchOptimistic 4 Membuka Recordset dengan batch
optimistic locking. Data yang diupdate
disimpan dalam bentuk batch
kemudian diupdate sekaligus dengan
perintah UpdateBatch.
41

Options menset nilai CommandTypeEnum yang mengindikasi bagaimana


provider mengevaluasi parameter Source.

Enumeration Value Description


adCmdUnspecified -1 Mengindikasikan bahwa properti
CommandText tak ditentukan. Nilai ini
tak didukung pada OLE DB Provider
untuk AS/400 & VSAM.
adCmdText 1 Evaluasi properti CommandText
sebagai defenisi tekstual dari perintah
atau stored procedure call.
adCmdTable 2 Evaluasi properti CommandText
sebagai nama tabel. Nilai ini tak
didukung pada OLE DB Provider untuk
AS/400 & VSAM.
adCmdStoredProc 4 Evaluasi properti CommandText
sebagai nama stored procedure. Nilai ini
tak didukung pada OLE DB Provider
untuk AS/400 & VSAM.
adCmdUnknown 8 Mengindikasikan bahwa tipe perintah
dalam properti CommandText tidak
diketahui. Ini adalah nilai default. Nilai
ini tak didukung pada OLE DB Provider
untuk AS/400 & VSAM.

Berikut adalah contoh sederhana koneksi ke database access.


Buka Vb anda dan pilih Standard exe. Tambahkan komponen Microsoft DataGrid
Control 6.0 (Ole DB) dan reference ke Microsoft ActiveX Data Objects 2.x Library.
Kemudian pada code window ketikkan kode berikut:

Private Sub Form_Load()


Dim db As Connection, rsProduct As Recordset
Set db = New Connection
db.CursorLocation = adUseClient
db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0; Data " & _
"Source = C:\Program Files\Microsoft Visual" & _
" Studio\VB98\NWIND.MDB;"
Set rsProduct = New Recordset
rsProduct.Open "SELECT ProductName,QuantityPerUnit," & _
"UnitPrice from Products", db, 1, 3
Set DataGrid1.DataSource = rsProduct
End Sub

Untuk manipulasi dapat digunakan method .AddNew, .Delete, .Update, dll


Sedangkan untuk menggeser pointer record, kita menggunakan method-method
seperti .MoveFirst, .Move Last, .MoveNext, dan MovePrevious.