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.

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.

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 :

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

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.

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 :

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 :

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
Single 4 byte -3.402823E38 s/d -1.401298E-45 (-)
1.401298E-45 s/d 3.402823E38 (+)
Double 8 byte -1.79769313486232E308 s/d -4.94065645841247E-324 (-)
Currency 8 byte -922,337,203,685,477.5808 s/d 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 variabel) 10 byte + panjang string 0 sampai lebih kurang 2 milyar
String (panjang tetap) panjang dari string 1 sampai lebih kurang 65,400
Variant (dengan angka) 16 byte Sembarang angka sampai jangkauan jenis Double
Variant (dengan karakter) 22 byte + panjang string Sama dengan jangkauan variabel 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.

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 :

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]  

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

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 :

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

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 :

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.

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.

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

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 :

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.

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

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.

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.

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.

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 :

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

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

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

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.

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 :

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

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

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

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
Alignment Digunakan untuk menentukan pemerataan tulisan pada kontrol label (0 - Left Justify, 1 - Right Justify, 2 - Center)

Appearance Digunakan untuk menentukan tampilan dari kontrol label di cat atau tidak (0 - Flat, 1 - 3D)
AutoSize Digunakan untuk menentukan apakah ukuran kontrol otomatis disesuaikan dengan ukuran tulisan (False, True)
BackColor Digunakan untuk menentukan warna latar belakang (properti ini saling berkaitan 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.

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

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

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
Click Event ini terjadi ketika pemakai melakukan klik pada kontrol, event ini terjadi dengan urutan (MouseDown, MouseUp, Click)
DblClick Event ini terjadi ketika pemakai melakukan double klik pada kontrol, event ini terjadi dengan urutan (MouseDown, MouseUp, Click, MouseDown, DblClick, MouseUp)
MouseDown Event ini terjadi ketika pemakai melakukan penekanan tombol mouse pada kontrol, parameter 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)
MouseMove Event ini terjadi ketika pamakai mengerakan mouse pada kontrol, parameter 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)
MouseUp Event ini terjadi ketika pemakai melepaskan penekanan tombol mouse pada kontrol, parameter 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)

Adapun metoda yang efektif pada kontrol label adalah :

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

Textbox

Digunakan untuk menampilkan text yang dapat diubah oleh pemakai pada saat runtime

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

PasswordChar 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 *

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)

TabIndex Digunakan untuk menentukan urutan tabindex, 0 adalah kontrol yang pertama mendapat fokus jika form dijalankan. Properti ini efektif jika setting properti TabStop adalah True
TabStop Digunakan untuk menentukan apakah textbox dapat menerima fokus karena 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}"
End If
End Sub

KeyUp Event ini terjadi setelah event KeyPress ketika pemakai mengetik karakter pada 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
DisablePicture Digunakan untuk menentukan gambar yang ditampilkan ketika kontrol Option disable (properti Enabled = False), properti ini efektif jika setting properti Style adalah (1- Graphical)
DownPicture Digunakan untuk menentukan gambar yang ditampilkan ketika kontrol Option dipilih (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 efektif jika picture yang masukkan adalah (*.bmp), dan setting properti UseMaskColor adalah True
MouseIcon sda
MousePointer sda
Picture Digunakan untuk menentukan gambar yang digunakan, properti ini efektif jika setting properti Style adalah (1 - Graphical)
Style Digunakan untuk menentukan jenis style pada kontrol option (0 - Standard, 1 - Graphical)
TabIndex sda
TabStop sda
Tag sda
ToolTipText sda
Top sda
UseMaskColor Digunakan akan warna yang ditentukan pada MaskColor efektif atau tidak (False, 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
Click sda, pada option event ini juga dibangkitkan ketika kontrol menerima fokus, 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 :

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
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
Visible Digunakan untuk menentukan apakah kontrol Visibel atau tidak, jika Visible false, 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

CommandButton

Digunakan untuk mendapatkan konfirmasi pemakai untuk pelaksanaan fungsi tertentu.

Properti Fungsi
Alignment sda
Appearance sda
BackColor sda
Cancel Digunakan untuk menentukan apakah command button merupakan perintah Cancel untuk form tersebut , jika properti ini True, maka ketika pemakai menekan ESC, akan membangkitkan event Click untuk kontrol tersebut.
Caption sda
CauseValidation sda
Default Digunakan untuk menentukan apakan command button merupakan 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.
MaskColor Digunakan untuk warna pada bitmap yang akan dijadikan transparan, properti ini 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

Gambar 3-6, Contoh properti pada kontrol Command

Adapun event-event yang efektif pada kontrol commandbutton adalah :

Event Keterangan
Click sda, pada commandbutton, event ini juga dibangkitkan ketika pemakai menekan 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 :

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

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

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.

 

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

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.
CauseValidation Digunakan untuk menentukan apakan event Validate di aktifkan ketika kontrol akan kehilangan fokus (False, True)
Column 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.

DragIcon Digunakan untuk menentukan icon yang digunakan pada operasi drag-n-drop pada kontrol label
DragMode Menentukan modus drag-n-drop (0 - manual, 1 - automatic)
Enabled Menentukan apakah kontrol label dapat menerima event yang dibuat oleh 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
Index Digunakan untuk menentukan nomor index, jika kontrol tersebut merupakan kontrol array.
IntegralHeight Digunakan untuk menentukan tinggi dari kontrol (Height) sedemikian rupa sehingga tidak ada item yang ditampilkan sebagian ( False, True)

ItemData Adalah daftar yang dapat digunakan untuk menyimpan nilai numerik yang berkaitan dengan item-item yang terdapat dalam listbox. Berkoresponden satu-satu.
Left Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
List Merupakan properti yang berisi pilihan dalam Listbox, untuk mengetik itemnya anda harus menggunakan Ctrl-Enter untuk memasukki item yang berikutnya.
MouseIcon Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse berada diatas kontrol label tersebut, properti ini berarti bila properti MousePointer diset menjadi (99 - Custom)
MousePointer Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse pointer berada diatas kontrol label tersebut.
MultiSelect 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.

Sorted Digunakan untuk menentukan apakah item dalam listbox otomatis diurut berdasarkan aphabetik atau tidak (False, True)
Style Digunakan untuk menentukan bentuk tampilan item yang digunakan (0 - Standard, 1 - Checkbox)

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

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

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
Click Event ini terjadi ketika pemakai melakukan klik pada kontrol, event ini terjadi dengan urutan (MouseDown, MouseUp, Click)
DblClick Event ini terjadi ketika pemakai melakukan double klik pada kontrol, event ini terjadi dengan urutan (MouseDown, MouseUp, Click, MouseDown, DblClick, MouseUp)
GotFocus Event ini terjadi ketika kontrol mendapatkan fokus
ItemCheck Event ini terjadi ketika pemakai melakukan klik untuk menandai checkbox pada item Listbox, Event ini efektif pada ListBox yang Style = Checkbox
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.
KeyUp Event ini terjadi setelah event KeyPress ketika pemakai mengetik karakter pada kontrol dengan urutan (KeyDown, KeyPress, KeyUp, Change)
LostFocus Event ini terjadi ketika kontrol kehilangan fokus
MouseDown Event ini terjadi ketika pemakai melakukan penekanan tombol mouse pada kontrol, parameter 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)
MouseMove Event ini terjadi ketika pamakai mengerakan mouse pada kontrol, parameter 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)
MouseUp Event ini terjadi ketika pemakai melepaskan penekanan tombol mouse pada kontrol, parameter 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)
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
Style 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.

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.

Secara umum ada dua keuntungan dengan pemakaian procedure dalam program :

Ada beberapa jenis procedure yang digunakan dalam Visual Basic

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 :

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

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

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

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

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

Menampilkan gambar kedalam kontrol image

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

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.

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

AutoRedraw Digunakan untuk menentukan apakah grafik yang dihasilkan dengan metoda pengambaran (Line, Circle, PSet) akan dijadikan sebagai bitmap yang tetap.
AutoSize Digunakan untuk menentukan apakah ukuran kontrol otomatis disesuaikan dengan ukuran objek picture.
BorderStyle sda
CauseValidation Digunakan untuk menentukan apakan event Validate di aktifkan ketika kontrol akan kehilangan fokus (False, True)
ClipControl Digunakan untuk menentukan icon yang digunakan pada operasi drag-n-drop pada kontrol label
DragIcon Digunakan untuk menentukan icon yang digunakan pada operasi drag-n-drop pada kontrol label
DragMode Menentukan modus drag-n-drop (0 - manual, 1 - automatic)
DrawMode Menentukan jenis modus yang digunakan pada saat pengambaran grafik dalam 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
Enabled Menentukan apakah kontrol label dapat menerima event yang dibuat oleh pemakai, misalnya event Click, MouseDown, MouseUp, dll.
FillColor Menentukan warna pengisian grafik
FillStyle Menentukan pola pengisian grafik

Font Digunakan untuk menentukan jenis font, ukuran, style, dll
ForeColor Digunakan untuk menentukan warna tulisan

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
FontTransparant Digunakan untuk menentukan apakah latar belakang tulisan transparant atau tidak.

Private Sub MyCommand_Click()
MyPicture.FontTransparent = True
MyPicture.Print "Transparent"
MyPicture.FontTransparent = False
MyPicture.Print "Tidak Transparent"
End Sub
Height Digunakan untuk menentukan tinggi dari kontrol
Index Digunakan untuk menentukan nomor index, jika kontrol tersebut merupakan kontrol array.
Left Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
MouseIcon Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse berada diatas kontrol label tersebut, properti ini berarti bila properti MousePointer diset menjadi (99 - Custom)
MousePointer Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse 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)

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.

ScaleLeft Digunakan untuk menentukan nilai koodinat horizontal paling kiri, anda dapat menggunakan properti ini untuk menentukan koordinat paling kiri dari suatu sumbu X.
ScaleTop Digunakan untuk menentukan nilai koodinat vertikal paling atas, anda dapat menggunakan properti ini untuk menentukan koordinat paling atas dari suatu sumbu Y.
ScaleHeight Digunakan untuk menentukan tinggi sumbu vertikal. Menentukan panjang sumbu Y.
ScaleWidth Digunakan untuk menentukan panjang sumbu horizontal. Menentukan panjang sumbu X.
Tag Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang berkaitan dengan kontrol picture tersebut
ToolTipText Digunakan untuk menentukan tip tulisan ketika mouse pointer berada diatas kontrol
Top Digunakan untuk menentukan jarak atas kontrol dari kontainernya.
Visible Digunakan untuk menentukan apakah kontrol label tersebut Visible atau tidak (False, True)
Width Digunakan untuk menentukan lebar picturebox

 

Properti Fungsi
CurrentX Digunakan untuk mendapatkan/menentukan posisi X yang sedang aktif, digunakan untuk perintah Print
CurrentY Digunakan untuk mendapatkan/menentukan posisi Y yang sedang aktif, 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
Circle(x,y),r,warna,awal,akhir,Aspek Mengambarkan sebuah lingkaran dengan berpusat pada koordinat x,y dan jari-jari r dengan warna garis, mulai dari sudut awal, sampai sudut akhir yang dinyatakan dalam radian), serta aspek perbandingkan tinggi dengan lebar.
Cls Membersihkan Picturebox dengan warna BackColor
Line (x1,y1) - (x2, y2),warna Mengambarkan garis tunggal dari koordinat x1,y1 sampai dengan x2,y2
Line (x1,y1) - (x2, y2),warna,B Mengambarkan kotak dari koordinat x1,y1 sampai dengan x2,y2
Line (x1,y1) - (x2, y2),warna,BF Mengambarkan kotak berisi dari koordinat x1,y1 sampai dengan x2,y2
PSet (x,y) Mencetak dot (titik) pada koordinat tertentu pada Form, Picturebox, dan Printer, pada koordinat yang ditentukan
PSet Step (x,y) Mencetak dot (titik) pada koordinat relatif terhadap posisi dot sebelunnya.
Point(x,y) Mendapatkan warna dot (titik) tertentu pada layar

Contoh :

Color& = MyPicture.Point(100,200)

Refresh Menyebabkan kontrol picture dan bitmap tetapnya digambar 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"

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.

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)

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.

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 :

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

Bagian Keterangan
interval Ekspresi string yang menunjukkan interval waktu yang ingin dijumlahkan (Perlu)
number Ekspresi numerik yang merupakan jumlah dari interval yang ingin dijumlahkan. Nilai Positif menunjukan (tanggal berikutnya), Nilai Negatif menunjukan (tanggal sebelumnya) (Perlu)
date Suatu Variant (Date) atau literal yang merupakan tanggal dimana interval akan dijumlahkan 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.

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

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.

Properti Fungsi
CauseValidation Digunakan untuk menentukan apakan event Validate di aktifkan ketika kontrol akan kehilangan fokus (False, True)
DragMode Menentukan modus drag-n-drop (0 - manual, 1 - automatic)
DragIcon Digunakan untuk menentukan icon yang digunakan pada operasi drag-n-drop pada kontrol.
Enabled Menentukan apakah kontrol label dapat menerima event yang dibuat oleh pemakai, misalnya event Click, MouseDown, MouseUp, dll.
Height Digunakan untuk menentukan tinggi dari kontrol
Index Digunakan untuk menentukan nomor index, jika kontrol tersebut merupakan kontrol array.
LargeChange Digunakan untuk menentukan besar perubahan Value ketika pemakai melakukan 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.
Max 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.

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

MouseIcon Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse berada diatas kontrol label tersebut, properti ini berarti bila properti MousePointer diset menjadi (99 - Custom)
MousePointer Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse pointer berada diatas kontrol label tersebut.
SmallChange Digunakan untuk menentukan besar perubahan Value ketika pemakai melakukan klik pada tanda Arah, atau ketika pemakai melakukan penekanan tombol panah kiri dan kanan pada saat aktif di ScrollBar.
TabIndex Digunakan untuk menentukan urutan tabindex, 0 adalah kontrol yang pertama mendapat fokus jika form dijalankan. Properti ini efektif jika setting properti TabStop adalah True
TabStop Digunakan untuk menentukan apakah textbox dapat menerima fokus karena penekanan tombol TAB oleh pemakai (False, True)
Tag Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang 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 (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
BackColor Menentukan warna latarbelakang dari suatu Shape. Properti ini efektif jika setting Backstyle dari Shape adalah (1 - Opaque)

BackStyle Menentukan jenis latarbelakang dari suatu Shape, apakah (0 - Transparent, 1 - Opaque)
BorderColor Menentukan warna bingkai dari suatu Shape. Properti ini efektif jika setting BorderStyle bukan (0 - Transparent)

BorderStyle Menentukan jenis garis border yang digunakan. (0 - Transparent, 1 - Solid, 2 - Dash, 3 - Dot, 4 - Dash Dot, 5 - Dash Dot Dot, dst)

BorderWidth Menentukan ukuran ketebalan garis border.

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

FillColor Menentukan warna yang digunakan untuk menggambarkan pola isinya yang ditentukan pada properti FillStyle. 

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

Timer

Properti Fungsi
Enabled Menentukan apakah kontrol dapat efektif terhadap Event Timer.
Index Digunakan untuk menentukan nomor index, jika kontrol tersebut merupakan kontrol array.
Interval Menentukan nilai interval dalam mili detik (1/1000) antar pemanggilan Event Timer. 
Tag Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang 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.

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.

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Kontrol Standard (bagian 5)

DriveListBox

DriveListBox dapat digunakan untuk menampilkan drive yang terdapat pada sistem komputer 

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

Mendapatkan Drive yang aktif di DriveListBox

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
CauseValidation Digunakan untuk menentukan apakan event Validate di aktifkan ketika kontrol akan kehilangan fokus (False, True)
DragMode Menentukan modus drag-n-drop (0 - manual, 1 - automatic)
DragIcon Digunakan untuk menentukan icon yang digunakan pada operasi drag-n-drop pada kontrol label
Enabled Menentukan apakah kontrol label dapat menerima event yang dibuat oleh pemakai, misalnya event Click, MouseDown, MouseUp, dll.
Font Digunakan untuk menentukan Font, Size, dan Style huruf yang digunakan pada kontrol.
ForeColor Digunakan untuk menentukan warna tulisan yang digunakan pada kontrol.
Height Digunakan untuk menentukan tinggi dari kontrol
Index Digunakan untuk menentukan nomor index, jika kontrol tersebut merupakan kontrol array.
Left Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
MouseIcon Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse berada diatas kontrol label tersebut, properti ini berarti bila properti MousePointer diset menjadi (99 - Custom)
MousePointer Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse pointer berada diatas kontrol label tersebut.
TabIndex Digunakan untuk menentukan urutan tabindex, 0 adalah kontrol yang pertama mendapat fokus jika form dijalankan. Properti ini efektif jika setting properti TabStop adalah True
TabStop Digunakan untuk menentukan apakah textbox dapat menerima fokus karena penekanan tombol TAB oleh pemakai (False, True)
Tag Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang 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 (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)
Archive Digunakan untuk menentukan apakah FileListBox dapat menampilkan file dengan atribut Archive atau tidak.
BackColor Digunakan untuk menentukan warna latarbelakang kontrol
CauseValidation Digunakan untuk menentukan apakan event Validate di aktifkan ketika kontrol akan kehilangan fokus (False, True)
DragMode Menentukan modus drag-n-drop (0 - manual, 1 - automatic)
DragIcon Digunakan untuk menentukan icon yang digunakan pada operasi drag-n-drop pada kontrol label
Enabled Menentukan apakah kontrol label dapat menerima event yang dibuat oleh pemakai, misalnya event Click, MouseDown, MouseUp, dll.
Font Digunakan untuk menentukan Font, Size, dan Style huruf yang digunakan pada kontroi.
ForeColor Digunakan untuk menentukan warna tulisan yang digunakan pada kontrol.
Hidden Digunakan untuk menentukan apakah FileListBox dapat menampilkan file dengan atribut Hidden atau tidak.
Height Digunakan untuk menentukan tinggi dari kontrol
Index Digunakan untuk menentukan nomor index, jika kontrol tersebut merupakan kontrol array.
Left Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
Normal Digunakan untuk menentukan apakah FileListBox dapat menampilkan file dengan atribut Normal atau tidak.
MouseIcon Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse berada diatas kontrol label tersebut, properti ini berarti bila properti MousePointer diset menjadi (99 - Custom)
MousePointer Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse pointer berada diatas kontrol label tersebut.
MultiSelect 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.
Pattern Digunakan untuk menentukan pola wildcard yang digunakan untuk membatasi file yang akan ditampilkan dalam kontrol (*.* semua file, *.bmp, ?A*.jpg)
ReadOnly Digunakan untuk menentukan apakah FileListBox dapat menampilkan file dengan atribut ReadOnly atau tidak.
System Digunakan untuk menentukan apakah FileListBox dapat menampilkan file dengan atribut System atau tidak.
TabIndex Digunakan untuk menentukan urutan tabindex, 0 adalah kontrol yang pertama mendapat fokus jika form dijalankan. Properti ini efektif jika setting properti TabStop adalah True
TabStop Digunakan untuk menentukan apakah textbox dapat menerima fokus karena penekanan tombol TAB oleh pemakai (False, True)
Tag Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang 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 (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

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

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

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.

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

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.

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.

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.

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

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

  1. Pada Table Name ketikkan nama tabel yang ingin anda buat, misalnya Forum
  2. 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.

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

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

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

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
Align Menentukan pemerataan kontrol pada Form (0-None, 1- Top, 2 - Bottom, 3 - Left, 4 - Right)
BOFAction Menentukan metoda yang akan otomatis diaktifkan ketika posisi pointer mencapai BOF (1 - MoveFirst, 0 - BOF)
Caption Menentukan tulisan pada data kontrol
Access Menentukan jenis software file database (Access, dBaseIII, dBaseIV, dll) sebagai sumber data
DatabaseName Menentukan path dan nama database file yang akan digunakan sebagai sumber data
DefaultCursorType Menentukan jenis kursor yang digunakan (0 - DefaultCursor, 1 - ODBCCursor, 2 - ServerSideCursor)
DefaultType Menentukan jenis data yang digunakan (2 - UseJext, 1 - UseODBC)
EOFAction Menentukan metoda yang akan otomatis diaktifkan ketika posisi pointer mencapai BOF (1 - MoveLast, 0 - EOF,2-AddNew)
Exclusive Menentukan modus pengaktifan database secara Share atau Exclusive (False, True)
ReadOnly Menentukan apakah recordset adalah readonly atau tidak (False, True)
RecordsetType Menentukan jenis recordset yang akan digunakan (1-Dynaset, 0-Table, 2-Snapshot)
RecordSource Menentukan sumber data untuk recordset, dapat berupa nama tabel maupun 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 Recordset Keterangan
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.

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 = 'hendra@indoprog.com'"

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
">" Lebih besar
"<=" Lebih kecil atau sama
"<" Lebih kecil

Contoh :

Data1.Recordset.Index = "P_Key"
Data1.Recordset.Seek "=","hendra@indoprog.com"

Memeriksa hasil pencarian record

Anda dapat menggunakan properti NoMatch untuk memeriksa hasil pencarian dengan metoda Find maupun metoda Seek.

Contoh

Data1.Recordset.FindFirst "Email = 'hendra@indoprog.com'"
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 "=","hendra@indoprog.com"
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.
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") = "hendra@indoprog.com"
...
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 :

Data1.Recordset.AddNew
Data1.Recordset("Email") = "hendra@indoprog.com"
...
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") = "hendra@indoprog.com"
...
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 :

  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

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.

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

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)

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

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

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.

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.

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

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

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)
Name Menentukan nama font yang digunakan, misalnya Verdana, Times New Roman, Arial, 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 :

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

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

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

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
   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
    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). Jika seorang user menghapus suatu record, user lain akan diberitahu ketika akan mengakses record tersebut.

Contoh :

Private Sub cmdRefresh_Click()
RsForum.Refresh
End Sub