Contoh Form Peminjaman - DOC

Document Sample
Contoh Form Peminjaman - DOC Powered By Docstoc
					Bab I Pengenalan Visual Basic ................................................................................................................... 1
  1.1.  IDE Visual Basic ........................................................................................................................... 1
     a) Menjalankan IDE ........................................................................................................................ 1
     b) Memilih jenis Project................................................................................................................. 1
     c) Jendela IDE ................................................................................................................................ 2
  1.2. Toolbox ......................................................................................................................................... 3
  1.3. Mengatur Lingkungan Kerja Visual Basic ............................................................................... 4
     a) Mengatur Editor ........................................................................................................................ 5
     b) Mengatur Format Editor .......................................................................................................... 5
     c) Mengatur hal-hal yang General ............................................................................................... 6
     d) Mengatur Docking Jendela ...................................................................................................... 6
     e) Mengatur Environment ............................................................................................................. 7
     f) Mengatur SDI Development Environment atau MDI ........................................................ 7
  1.4. Bahasa Visual Basic Aplication ................................................................................................. 8
     a) Type Variabel ............................................................................................................................. 8
     b) Operator Pada Visual Basic dan urutan operasinya ............................................................ 8
     c) Operator Like ............................................................................................................................. 9
     d) Deklarasi Variabel ..................................................................................................................... 9
Bab II Memahami Objek pada Visual Basic ......................................................................................... 11
  2.1. Apa yang dimaksud dengan Objek .......................................................................................... 11
  2.2. Dari mana datangnya Objek .................................................................................................... 11
  2.3. Bekerja dengan objek .............................................................................................................. 12
     a) Mengatur Nilai properti ......................................................................................................... 12
     b) Mengambil nilai dari Properti ................................................................................................ 13
     c) Menggunakan Metode dalam Kode ....................................................................................... 13
     d) Beberapa properti yang umum .............................................................................................. 13
     e) Beberapa Metode-metode umum ......................................................................................... 17
     f) Beberapa Event yang umum ................................................................................................... 19
  2.4. Objek Browser .......................................................................................................................... 20
  2.5. Mengenal Form .......................................................................................................................... 21
     a) Struktur kode pada Form ......................................................................................................22
     b) Beberapa Event, Metoda, dan Perintah pada Form .......................................................... 24
     c) Urutan Event pada Form ........................................................................................................27
  2.6. Bahasa Visual Basic Aplication ............................................................................................... 27
     a) Konvensi penamaan dalam Visual Basic ................................................................................27
     b) Mengenal Struktur Kendali....................................................................................................28
Bab III Kontrol Standard ......................................................................................................................30
  3.1. Jenis Kontrol Standar .............................................................................................................30
     a) Label ...........................................................................................................................................30
     b) Textbox ..................................................................................................................................... 31
     c) Option ........................................................................................................................................33
     d) Check ..........................................................................................................................................34
     e) Frame .........................................................................................................................................34
     f) CommandButton ....................................................................................................................... 35
     g) ListBox .......................................................................................................................................37
     h) Combo Box .................................................................................................................................40
    i) Image ..........................................................................................................................................42
    j) PictureBox ..................................................................................................................................44
    k) HScrollBar dan VScrollBar ....................................................................................................48
    l) Line dan Shape .......................................................................................................................... 50
    m) Timer .......................................................................................................................................... 51
    n) DriveListBox ............................................................................................................................. 51
    o) DirListBox .................................................................................................................................53
    p) FileListBox ................................................................................................................................ 53
Bab IV Fungsi Bantu pada Visual Basic dan Visual Basic Aplication ..............................................56
  4.1. Visual Basic Application ...........................................................................................................56
    a) Deklarasi Konstanta ................................................................................................................56
    b) Struktur Perulangan................................................................................................................56
    c) Struktur Kendali Nested .......................................................................................................58
  4.2. Fungsi Bantu pada Visual Basic .............................................................................................. 59
    a) Fungsi Bantu Konversi .............................................................................................................59
    b) Fungsi Bantu Waktu ................................................................................................................63
  4.3. Module Pada Visual Basic ........................................................................................................65
    a) Deklarasi Variabel Pada Module ........................................................................................... 65
    b) Deklarasi Fungsi dan Sub pada module ...............................................................................66
    c) Procedure ..................................................................................................................................66
    d) Function Procedure .................................................................................................................67
  4.4. Mencetak Isi Form ke Printer ............................................................................................... 67
    a) Memahami Objek App .............................................................................................................68
    b) Mendapatkan Path dimana aplikasi berada ........................................................................68
    c) Mendapatkan nama file Executable .....................................................................................68
    d) Memeriksa apakah aplikasi telah dijalankan ......................................................................68
    e) Tidak menampilkan aplikasi pada task list ketika sedang berjalan ............................... 68
    f) Memahami Objek Screen .......................................................................................................69
Bab V MDI Form, Menu dan Objek Printer ........................................................................................ 70
  5.1. Mengenal Multiple Document Interface ............................................................................. 71
  5.2. Membuat suatu Aplikasi MDI pada Visual Basic ................................................................ 71
    a) Karakteristik dari MDI Form ............................................................................................... 71
    b) Mendapatkan MDI Child yang sedang aktif. ......................................................................72
    c) Mengatur MDI Child dalam jendela MDI form .................................................................72
  5.3. Membuat Menu Pada Visual Basic ......................................................................................... 72
    a) Membuat Garis Pemisah antar Menu ...................................................................................73
    b) Melakukan Koding terhadap Menu ....................................................................................... 74
    c) Membuat Menu yang memiliki tanda Check........................................................................74
  5.4. Membuat Menu Pop Up ............................................................................................................76
  5.5. Memahami Objek Printer ........................................................................................................76
    a) Mencetak Data ke Objek Printer......................................................................................... 77
    b) Menentukan ukuran kertas ....................................................................................................77
    c) Menentukan posisi pencetakkan ........................................................................................... 78
    d) Menentukan font pencetakkan ............................................................................................. 78
    e) Menentukan orientasi pencetakkan .....................................................................................78
    f) Mendapatkan informasi printer yang terinstalasi pada sistem .....................................79
    g) Menentukan Printer yang akan digunakan .........................................................................79
Bab VI Database dan Data Kontrol ......................................................................................................80
  6.1. Konsep Database Relational ...................................................................................................80
    a) Tabel........................................................................................................................................... 81
    b) Record ........................................................................................................................................82
    c) Field ............................................................................................................................................82
    d) Key ..............................................................................................................................................82
    e) Index ..........................................................................................................................................82
  6.2. Membuat Database dengan Visual Data Manager ............................................................. 83
  6.3. Membuat Relasi antar database ............................................................................................ 86
  6.4. Mengenal Data kontrol ............................................................................................................88
    a) DBList ........................................................................................................................................88
    b) Properti pada Data kontrol....................................................................................................88
  6.5. Memahami Jenis RecordSet...................................................................................................89
  6.6. Metoda-metoda pada Data Kontrol ......................................................................................89
    a) Bergerak dalam RecordSet ...................................................................................................89
    b) Mencari suatu record tertentu ............................................................................................ 89
    c) Memeriksa hasil pencarian record ....................................................................................... 90
    d) Menandai posisi record ..........................................................................................................90
    e) Mengambil nilai field dari record aktif ..............................................................................90
    f) Mengubah nilai field dari record aktif ............................................................................... 91
    g) Menambah record baru ke recordset ................................................................................. 91
    h) Menghapus record yang sedang aktif .................................................................................92
    i) Melakukan refresh data pada Recordset ............................................................................92
    j) Menutup suatu Recordset .......................................................................................................92
  6.7. Event Pada Data Kontrol .........................................................................................................93
    a) Event Error ............................................................................................................................... 93
    b) Event Reposition ......................................................................................................................93
    c) Event Validate .......................................................................................................................... 93
Bab VII Pengaturan MultiUser pada Data Kontrol ...........................................................................95
  7.1. Masalah pada Pesimistik Locks .............................................................................................. 96
  7.2. Masalah pada Optimistik Locks ............................................................................................. 97
  7.3. Recordset pada lingkungan MultiUser .................................................................................99
    a) Table...........................................................................................................................................99
    b) Dynaset ......................................................................................................................................99
Bab VIII Mengenal SQL ....................................................................................................................... 100
  8.1. Data Definition Language (DDL).......................................................................................... 100
    a) Membuat Tabel Baru ............................................................................................................. 100
    b) Membuat Index...................................................................................................................... 103
    c) Memodifikasi Tabel ............................................................................................................... 103
    d) Menghapus Table atau Index .............................................................................................. 103
  8.2. Menambah data dengan APPEND query ............................................................................. 104
  8.3. Menghapus data dengan DELETE query ............................................................................ 104
  8.4. Memperbaiki Data dengan UPDATE query ........................................................................ 104
  8.5. Mengambil Data dengan SELECT query ............................................................................. 105
  8.6. Menganti nama kolom recordset dengan reserved word AS......................................... 105
  8.7.    Membatasi hasil query dengan WHERE clause ................................................................ 105
  8.8.    Mengurut hasil query dengan ORDER BY clause .............................................................. 106
  8.9.    Mengetahui statistik data dengan Fungsi Agregate ....................................................... 106
  8.10.     Meringkas data dengan GROUP BY clause .................................................................... 106
  8.11.     Membatasi data yang telah diringkas dengan HAVING clause ................................ 106
  8.12.     Menggunakan predikat ALL, DISTINCT, DISTINCT ROW dan TOP .................... 107
  8.13.     Mengambil kolom dari dua atau lebih tabel dengan Operasi INNER JOIN .......... 107
  8.14.     Operasi LEFT JOIN, RIGHT JOIN............................................................................... 109
  8.15.     Membuat union query dengan Operasi UNION ........................................................... 109
  8.16.     Membuat CROSSTAB query dengan TRANSFORM statement................................ 109
Bab IX    Memahami ADODC melalui Data Form Wizard.................................................................. 110
  9.1.    Mengaktifkan fasilitas Data Form Wizard ........................................................................ 111
  9.2.    Menjalankan Data Form Wizard ........................................................................................... 111
  9.3.    Mempelajari kontrol ADODC hasil Form Wizard. ............................................................ 111
  9.4.    Bound TextBox pada ADODC ............................................................................................... 112
  9.5.    Memahami koding ADO melalui Data Form Wizard ........................................................ 115
  9.6.    Reference ke Microsoft ActiveX Data Objects 2.0 Library ....................................... 116
  9.7.    Bound TextBox pada ADO .................................................................................................... 117
                                                    Bab I
                                            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.

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

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

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




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

c)   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. Anda dapat lihat pada Gambar 1-3. IDE Visual Basic dengan
jendela-jendela yang terbuka.
         Sebagaimana dengan proses belajar ini, kita akan fokus pada beberapa jendela yang penting terlebih dahulu
sehingga konsentrasi tidak menjadi pecah, dan peserta belajar menjadi bingung. Adapun jendela-jendela yang perlu
anda perhatikan adalah sebagai berikut :

          Menu Bar, digunakan untuk memilih tugas-tugas tertentu seperti menyimpan project, membuka project, dll

          Main Toolbar, digunakan untuk melakukan tugas-tugas tertentu dengan cepat.

          Jendela Project, jendela ini berisi gambaran dari semua modul yang terdapat dalam aplikasi anda. Anda
           dapat menggunakan icon Toggle Folders untuk menampilkan modul-modul dalam jendela tersebut secara di
           group atau berurut berdasarkan nama. Anda dapat menggunakan Ctrl+R untuk menampilkan jendela project,
           ataupun menggunakan icon Project Explorer.


                                                                                                                    2
        Jendela Form Designer, jendela ini merupakan tempat anda untuk merancang user interface dari aplikasi
         anda. Jadi jendela ini menyerupai kanvas bagi seorang pelukis.

        Jendela Toolbox, jendela ini berisi komponen-komponen yang dapat anda gunakan untuk mengembangkan
         user interface.

        Jendela Code, merupakan tempat bagi anda untuk menulis koding. Anda dapat menampilkan jendela ini
         dengan menggunakan kombinasi Shift-F7.

        Jendela Properties, merupakan daftar properti-properti object yang sedang terpilih. Sebagai contohnya anda
         dapat mengubah warna tulisan (foreground) dan warna latarbelakang (background). Anda dapat
         menggunakan F4 untuk menampilkan jendela properti.

        Jendela Color Palette, adalah fasilitas cepat untuk mengubah warna suatu object.

        Jendela Form Layout, akan menunjukan bagaimana form bersangkutan ditampilkan ketika runtime.


Jika jendela-jendela tersebut tidak ada, anda dapat memunculkannya dengan Menu View dan pilih :
              Project Explorer (Ctrl+R)

              Properties Windows (F4)

              Form Layout Windows

              Property Pages (Shift+F4)

              Toolbox

              Color Pallete

             Toolbars

 1.2. 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. Perhatikan gambar
1-3. Toolbox Visual Basic 6 dengan semua kontrol intrinsic.
Adapun secara garis besar fungsi dari masing-masing intrinsic kontrol tersebut adalah sebagai berikut :
        Pointer bukan merupakan suatu kontrol; gunakan icon ini ketika anda ingin memilih kontrol yang sudah
         berada pada form.

        PictureBox adalah kontrol yang digunakan untuk menampilkan image dengan format: BMP, DIB (bitmap),
         ICO (icon), CUR (cursor), WMF (metafile), EMF (enhanced metafile), GIF, dan JPEG.

        Label adalah kontrol yang digunakan untuk menampilkan teks yang tidak dapat diperbaiki oleh pemakai.




                                                                                                                  3
        TextBox adalah kontrol yang mengandung string yang dapat diperbaiki oleh pemakai, dapat berupa satu
         baris tunggal, atau banyak baris.

        Frame adalah kontrol yang digunakan sebagai kontainer bagi kontrol lainnya.

        CommandButton merupakan kontrol hampir ditemukan pada setiap form, dan digunakan untuk
         membangkitkan event proses tertentu ketika pemakai melakukan klik padanya.

        CheckBox digunakan untuk pilihan yang isinya bernilai yes/no, true/false.

        OptionButton sering digunakan lebih dari satu sebagai pilihan terhadap beberapa option yang hanya dapat
         dipilih satu.

        ListBox mengandung sejumlah item, dan user dapat memilih lebih dari satu (bergantung pada property
         MultiSelect).

        ComboBox merupakan konbinasi dari TextBox dan suatu ListBox dimana pemasukkan data dapat dilakukan
         dengan pengetikkan maupun pemilihan.

        HScrollBar dan VScrollBar digunakan untuk membentuk scrollbar berdiri sendiri.

        Timer digunakan untuk proses background yang diaktifkan berdasarkan interval waktu tertentu. Merupakan
         kontrol non-visual.

        DriveListBox, DirListBox, dan FileListBox sering digunakan untuk membentuk dialog box yang berkaitan
         dengan file.

        Shape dan Line digunakan untuk menampilkan bentuk seperti garis, persegi, bulatan, oval.

        Image berfungsi menyerupai image box, 5tetapi tidak dapat digunakan sebagai kontainer bagi kontrol
         lainnya. Sesuatu yang perlu diketahui bahwa kontrol image menggunakan resource yang lebih kecil
         dibandingkan dengan PictureBox

        Data digunakan untuk data binding

        OLE dapat digunakan sebagai tempat bagi program eksternal seperti Microsoft Excel, Word, dll.



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




                                                                                                                   4
a)   Mengatur Editor




b)   Mengatur Format Editor




                              5
c)   Mengatur hal-hal yang General




d)   Mengatur Docking Jendela




                                     6
e)   Mengatur Environment




f)   Mengatur SDI Development Environment atau MDI




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

       a)      Type Variabel
       Dibandingkan dengan type data yang terdapat pada bahasa basic, maka pada VBA, type data yang disediakan
lebih banyak, seperti type Currency, Decimal, Object, dan Variant.. Variant merupakan type variabel yang istimewa,
karena dapat berubah dari satu type ke type yang lain, sesuai dengan evaluasi ekspresi oleh Visual Basic.
Ketepatan pemilihan type variabel akan sangat menentukan pemakaian resources oleh aplikasi yang dihasilkan,
adalah tugas programmer untuk memilih type yang sesuai untuk menghasilkan program yang efisien dan
berperfomance tinggi.
Type Data                 Ukuran Storage             Jangkuan
Byte                      1 byte                     0 s/d 255
Boolean                   2 byte                     True atau False
Integer                   2 byte                     -32,768 s/d 32767
Long                      4 byte                     -2,147,483,648 s/d 2,147,483,647
                                                     -3.402823E38 s/d -1.401298E-45 (-)
Single                    4 byte
                                                     1.401298E-45 s/d 3.402823E38 (+)
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
                          22 byte + panjang string Sama dengan jangkauan variabel String
karakter)
                      Tabel 1-1. Type variabel, pemakaian storage dan jangkauan masing-masing


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



                                                                                                                 8
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

        c)     Operator Like
        Salaj satu operator yang menarik untuk dibahas adalah operator like, Operator digunakan untuk operasi
pencocokan pola pada string yang akan sangat membantu programmer.
Syntax :
Result = string Like pattern

Karakter dalam pola             Penyamaan dalam string
?                               Sembarang karakter tunggal
*                               Nol atau lebih karakter
#                               Sembarang digit tunggal (0-9)
[charlist]                      Sembarang karakter yang berada dalam charlist
[!charlist]                     Sembarang karakter yang tidak berada dalam charlist
                            Tabel 1-3. Character dalam pencocokan pola pada operator Like


Contoh :
            MyCheck = "aBBBa" Like "a*a"            ' Returns True.

            MyCheck = "F" Like "[A-Z]"              ' Returns True.

            MyCheck = "F" Like "[!A-Z]"             ' Returns False.

            MyCheck = "a2a" Like "a#a"              ' Returns True.

            MyCheck = "aM5b" Like "a[L-P]#[!c-e]"   ' Returns True.

            MyCheck = "BAT123khg" Like "B?T*"       ' Returns True.

            MyCheck = "CAT123khg" Like "B?T*"



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



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




                                                                               10
                                                 Bab II
                                     Memahami Objek pada Visual Basic

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

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

         Kontrol-kontrol yang berada pada jendela Toolbox pada Visual Basic merupakan class-class. Objek tersebut
          dikenal sebagai kontrol tidak akan ada sampai anda menanamkannya pada suatu form. Ketika anda
          menanamkan suatu kontrol, anda telah membuat suatu duplikasi atau instance dari class kontrol tersebut.

         Form dimana anda bekerja pada saat desain adalah suatu class. Pada saat run time, Visual Basic
          menciptakan suatu instance dari class form.




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


        Misalnya anda menamkan sebuah textbox diatas form1, coba perhatikan jendela properti kontrol tersebut akan
menampilkan Text1 (nama dari kontrol textbox tersebut) dan Textbox (nama dari class kontrol tersebut).




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




                                                                                                                    11
       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

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

a)     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 : Private Sub Form_Load()
              MyForm.Caption = "Pemakai Telepon"
            End Sub




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

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

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

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




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




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




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

          Jika properti Screen.MousePointer di set ke nilai yang bukan 0-vbDefault, kursor mouse akan mengikuti nilai
           ini, tetapi ketika mouse berada diatas aplikasi lain (atau pada desktop), tampilan kursor akan bergantung
           kepada kondisi aplikasi bersangkutan, bukan pada aplikasi anda.




                                                                                                                   16
          Jika Screen.MousePointer adalah 0 dan kursor mouse berada diatas suatu kontrol, Visual Basic akan
           memeriksa nilai properti MousePointer kontrol tersebut; jika nilainya bukan 0-vbDefault, kursor mouse akan
           di set ke nilai tersebut.

          Jika Screen.MousePointer adalah 0 dan mouse berada diatas permukaan suatu form atau berada diatas
           kontrol yang properti MousePointer adalah 0, Visual Basic akan menggunakan nilai yang tersimpan pada
           properti Mousepointer pada form.

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




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

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

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


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




                                                                                                             18
           Gambar 2-10, contoh pemakaian metode ZOrder

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


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

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




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

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




                                                                                                         21
       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

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



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




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

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




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

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




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

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




                                                                                                                24
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




                                                                                                          25
              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




                                                                                                               26
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

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



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

               Harus dimulai dengan suatu Huruf

               Tidak dapat mengandung titik atau spesial karakter

               Tidak dapat lebih dari 255 huruf, nama dari control, forms, classes, dan module tidak melebihi 40
                karakter.

               Tidak dapat sama dengan keywords yang tercadang.
       Keyword yang tercadang adalah kata yang Visual Basic gunakan sebagai bagian dari bahasanya. Ini terdiri
dari predefined statements (seperti If dan Loop), function (seperti Len dan Abs), dan operator (seperti Or dan Mod).
Deklarasi Variabel

               Deklarasi variabel pada bagian deklarasi di suatu form, standard, atau class module, dari pada dalam
                suatu procedure, membuat variabel itu berlaku untuk semua procedure dalam module tersebut



                                                                                                                       27
               Deklarasi variabel dengan menggunakan keyword Public membuatnya berlaku pada keseluruhan
                aplikasi anda.

               Deklarasi suatu variabel lokal dengan menggunakanan keyword Static akan menyimpan nilainya ketika
                suatu procedure berakhir.


Deklarasi Implicit
Anda tidak perlu mendeklarasikan suatu variabel sebelum menggunakannya.

Deklarasi Explicit
        Untuk mencegah kesalahan mengetik variabel, dan Visual Basic akan selalu memberikan peringatan jika
menemukan nama yang tidak dideklarasikan terlebih dahulu sebagai suatu variabel.
Catatan :
        Pernyataan Option Explicit hanya bekerja per-module, sehingga harus diletakkan pada bagian deklarasi pada
setiap form, dan class module yang mana anda ingin Visual Basic memaksakan suatu explicit variabel deklarasi

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



                                                                                                               28
          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




                                                                                                                    29
                                                        Bab III
                                                   Kontrol Standard


        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.

3.1. Jenis Kontrol Standar
a)    Label
        Digunakan untuk menampilkan text tanpa bisa diubah oleh pemakai pada saat runtime. Beberapa properti
pada label :
        Properti                                                       Fungsi

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

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

                      Digunakan untuk menentukan prilaku latar belakang kontrol label (0 - Transparent, 1 - Opaque), kalau
BackStyle
                      transparan, maka BackColor menjadi tidak berarti, demikian juga Appearance.

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

                      Digunakan untuk menentukan tulisan pada kontrol label, mungkin ini adalah properti yang paling sering
Caption
                      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)
                      Menentukan apakah kontrol label dapat menerima event yang dibuat oleh pemakai, misalnya event
Enabled
                      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.
                      Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse berada diatas kontrol
MouseIcon
                      label tersebut, properti ini berarti bila properti MousePointer diset menjadi (99 - Custom)
                      Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse pointer berada diatas kontrol
MousePointer
                      label tersebut.
                      Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang berkaitan dengan kontrol
Tag
                      label tersebut
ToolTipText           Digunakan untuk menentukan tip tulisan ketika mouse pointer berada diatas kontrol
Top                   Digunakan untuk menentukan jarak atas kontrol dari kontainernya.




                                                                                                                              30
                          Digunakan untuk menentukan perlakuan terhadap tanda & ampersand sebagai access key, atau sebagai
 UseMnenomic
                          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.



           Adapun event-event yang efektif pada kontrol label adalah :
            Event                                                            Keterangan
Change                     Event ini terjadi ketika nilai properti Caption dari kontrol
                           Event ini terjadi ketika pemakai melakukan klik pada kontrol, event ini terjadi dengan urutan
Click
                           (MouseDown, MouseUp, Click)
                           Event ini terjadi ketika pemakai melakukan double klik pada kontrol, event ini terjadi dengan urutan
DblClick
                           (MouseDown, MouseUp, Click, MouseDown, DblClick, MouseUp)
                           Event ini terjadi ketika pemakai melakukan penekanan tombol mouse pada kontrol, parameter yang
MouseDown                  dapat digunakan adalah Button (1 - Tombol kiri, 2 - Tombol kanan), Shift (1 - Shift, 2 - Ctrl, 3 - Alt), X
                           (posisi kolom pointer), Y (posisi baris pointer)
                           Event ini terjadi ketika pamakai mengerakan mouse pada kontrol, parameter yang dapat digunakan
MouseMove                  adalah Button (1 - Tombol kiri, 2 - Tombol kanan), Shift (1 - Shift, 2 - Ctrl, 3 - Alt), X (posisi kolom
                           pointer), Y (posisi baris pointer)
                           Event ini terjadi ketika pemakai melepaskan penekanan tombol mouse pada kontrol, parameter yang
MouseUp                    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
                           Metoda ini digunakan untuk memindahkan letak (koordinat Left, Top) dari kontrol label maupun
Move
                           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.

b)      Textbox
           Digunakan untuk menampilkan text yang dapat diubah oleh pemakai pada saat runtime
        Properti                                                          Fungsi
Alignment                  Sda
Appearance                 Sda
BackColor                  Sda
BorderStyle                Sda
                           Digunakan untuk menentukan apakan event Validate di aktifkan ketika kontrol akan kehilangan fokus
CauseValidation
                           (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




                                                                                                                                        31
                          tidak (False, True)
                          Digunakan untuk menentukan jumlah huruf maksimal yang dapat diketikkan dalam textbox (0 s/d
MaxLength
                          65535), 0 tidak dibatasi.
                          Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse berada diatas kontrol
MouseIcon
                          label tersebut, properti ini berarti bila properti MousePointer diset menjadi (99 - Custom)
                          Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse pointer berada diatas
MousePointer
                          kontrol label tersebut.

                          Digunakan untuk menentukan apakah tulisan dalam textbox dapat ditampilkan dalam bentuk beberapa
MultiLine
                          baris, dan mengenali Enter untuk memasuki baris baru. (False, True)

                          Digunakan untuk menentukan karakter yang digunakan untuk menyandikan tampilan huruf yang diketik
PasswordChar              oleh pemakai. Biasanya digunakan untuk pengisian password, dimana huruf yang ditekan ditampilkan
                          dalam bentuk *

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

                          Digunakan untuk menentukan urutan tabindex, 0 adalah kontrol yang pertama mendapat fokus jika form
TabIndex
                          dijalankan. Properti ini efektif jika setting properti TabStop adalah True
                          Digunakan untuk menentukan apakah textbox dapat menerima fokus karena penekanan tombol TAB
TabStop
                          oleh pemakai (False, True)
Tag                       Sda
Text                      Properti ini berisi tulisan yang berada dalam textbox
ToolTipText               Sda
Top                       Sda
Width                     Sda
          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
                          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 :
KeyPress
                          Private Sub txtNama_KeyPress(KeyAscii As Integer)
                          If KeyAscii = 13 Then
                          SendKeys "{Tab}"
                          End If
                          End Sub

                          Event ini terjadi setelah event KeyPress ketika pemakai mengetik karakter pada kontrol dengan urutan
KeyUp
                          (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



                                                                                                                               32
Move                       Sda
Refresh                    Sda
Setfocus                   Metoda ini digunakan untuk menimdahkan fokus ke kontrol yang bersangkutan
Zorder                     sda

c)   Option
          Digunakan untuk menampilkan beberapa pilihan yang hanya dapat dipilih salah satu dalam suatu form, untuk
      Properti                                                          Fungsi
Alignment            Sda
Appearance           sda
BackColor            sda
Caption              sda
CauseValidation      sda
                     Digunakan untuk menentukan gambar yang ditampilkan ketika kontrol Option disable (properti Enabled =
DisablePicture
                     False), properti ini efektif jika setting properti Style adalah (1- Graphical)
                     Digunakan untuk menentukan gambar yang ditampilkan ketika kontrol Option dipilih (properti Value = True),
DownPicture
                     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.
                     Digunakan untuk warna pada bitmap yang akan dijadikan transparan, properti ini efektif jika picture yang
MaskColor
                     masukkan adalah (*.bmp), dan setting properti UseMaskColor adalah True
MouseIcon            sda
MousePointer         sda
                     Digunakan untuk menentukan gambar yang digunakan, properti ini efektif jika setting properti Style adalah (1 -
Picture
                     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
          Adapun event-event yang efektif pada kontrol option adalah :
            Event                                                        Keterangan
                            sda, pada option event ini juga dibangkitkan ketika kontrol menerima fokus, maupun ketika pemakai
 Click
                            menekan space pada kontrol bersangkutan.
 DblClick                   sda
 GotFocus                   sda
 KeyDown                    sda
 KeyPress                   sda



                                                                                                                                33
 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

d)   Check
          Digunakan untuk menampilkan beberapa pilihan yang dapat dipilih lebih dari satu. Properti kontrol Check,
maupun event dapat dilihat pada properti Option

e)   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
                          Digunakan untuk menentukan apakah kontrol Visibel atau tidak, jika Visible false, maka semua kontrol
Visible
                          yang berada diatasnya menjadi tidak kelihatan.
Width                     sda
          Adapun event-event yang efektif pada kontrol frame adalah :




                                                                                                                            34
           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

f)   CommandButton
          Digunakan untuk mendapatkan konfirmasi pemakai untuk pelaksanaan fungsi tertentu.
        Properti                                                        Fungsi
Alignment                 Sda
Appearance                sda
BackColor                 sda
                          Digunakan untuk menentukan apakah command button merupakan perintah Cancel untuk form
Cancel                    tersebut , jika properti ini True, maka ketika pemakai menekan ESC, akan membangkitkan event Click
                          untuk kontrol tersebut.
Caption                   sda
CauseValidation           sda
                          Digunakan untuk menentukan apakan command button merupakan Default command untuk form
Default                   tersebut, jika properti ini True, maka ketika pemakai menekan Enter, akan membangkitkan event Click
                          untuk kontrol tersebut.
DragIcon                  sda
DragMode                  sda
Enabled                   sda
Font                      sda
ForeColor                 sda
Height                    sda
Index                     sda
Left                      Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
                          Digunakan untuk warna pada bitmap yang akan dijadikan transparan, properti ini efektif jika picture
MaskColor
                          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
          Adapun event-event yang efektif pada kontrol commandbutton adalah :



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




                                                                                                                           36
g)      ListBox

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

        Properti                                                    Fungsi
Appearance             Digunakan untuk menentukan tampilan dari kontrol (0 - Flat, 1 - 3D)
BackColor              Digunakan untuk menentukan warna latar belakang.
                       Digunakan untuk menentukan apakan event Validate di aktifkan ketika kontrol akan kehilangan fokus
CauseValidation
                       (False, True)
                       Digunakan untuk menentukan apakah daftar pilihan dalam listbox ditampilkan 1 kolom vertikal kebawah
                       (0), atau kebawah dan menyamping sesuai dengan jumlah kolom yang ditentukan jika daftar pilihan
Column                 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)
                       Menentukan apakah kontrol label dapat menerima event yang dibuat oleh pemakai, misalnya event
Enabled
                       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.
                       Digunakan untuk menentukan tinggi dari kontrol (Height) sedemikian rupa sehingga tidak ada item yang
                       ditampilkan sebagian ( False, True)
IntegralHeight


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


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

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




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

             klik pada properti List,

             ketikkan Satu, tekan Ctrl-Enter

             ketikkan Dua, tekan Ctrl-Enter

             dst

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

              Private Sub Form_Load()
               LstAngka.AddItem("Satu")
               LstAngka.AddItem("Dua")
               LstAngka.AddItem("Tiga")
               LstAngka.AddItem("Empat")
               LstAngka.AddItem("Lima")
              End Sub
Mendapatkan jumlah item dalam Listbox

              Untuk mendapatkan jumlah item dalam Listbox anda dapat menggunakan properti ListCount.
Menggambil item yang dipilih oleh pemakai

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

              Private Sub LstAngka_Click()
               MsgBox LstAngka.Text
              End Sub

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




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

Contoh program yang menggunakan ListIndex dan RemoveItem

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

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

Mengosongkan isi seluruh Listbox

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

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

            Event          Keterangan
                           Event ini terjadi ketika pemakai melakukan klik pada kontrol, event ini terjadi dengan urutan
Click
                           (MouseDown, MouseUp, Click)
                           Event ini terjadi ketika pemakai melakukan double klik pada kontrol, event ini terjadi dengan urutan
DblClick
                           (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



                                                                                                                              39
                          efektif pada ListBox yang Style = Checkbox
KeyDown                   Event ini terjadi ketika pemakai mengetik karakter pada kontrol
                          Event ini terjadi setelah event KeyDown ketika pemakai mengetik karakter pada kontrol, parameter
KeyPress                  yang dapat digunakan adalah KeyAscii. Anda dapat memanipulasi tombol yang diketik dengan
                          melakukan perubahan pada nilai KeyAscii.
                          Event ini terjadi setelah event KeyPress ketika pemakai mengetik karakter pada kontrol dengan urutan
KeyUp
                          (KeyDown, KeyPress, KeyUp, Change)
LostFocus                 Event ini terjadi ketika kontrol kehilangan fokus
                          Event ini terjadi ketika pemakai melakukan penekanan tombol mouse pada kontrol, parameter yang
MouseDown                 dapat digunakan adalah Button (1 - Tombol kiri, 2 - Tombol kanan), Shift (1 - Shift, 2 - Ctrl, 3 - Alt), X
                          (posisi kolom pointer), Y (posisi baris pointer)
                          Event ini terjadi ketika pamakai mengerakan mouse pada kontrol, parameter yang dapat digunakan
MouseMove                 adalah Button (1 - Tombol kiri, 2 - Tombol kanan), Shift (1 - Shift, 2 - Ctrl, 3 - Alt), X (posisi kolom
                          pointer), Y (posisi baris pointer)
                          Event ini terjadi ketika pemakai melepaskan penekanan tombol mouse pada kontrol, parameter yang
MouseUp                   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.

h)      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
                          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
Style                     keatas atau kebawah dan daftar tidak bisa terbuka, pada Dropdown List, tulisan hanya dapat dipilih dari
                          daftar.




                                                                                                                                  40
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




                                                                                                    41
i)    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
                      Digunakan untuk menentukan jenis border yang digunakan (0 - None, 1 - Fixed Single)




BorderStyle




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)
                      Menentukan apakah kontrol dapat menerima event yang dibuat oleh pemakai, misalnya event Click,
Enabled
                      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.
                      Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse berada diatas kontrol
MouseIcon
                      label tersebut, properti ini berarti bila properti MousePointer diset menjadi (99 - Custom)
                      Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse pointer berada diatas
MousePointer
                      kontrol label tersebut.
                      Digunakan untuk menentukan apakah gambar disesuaikan dengan ukuran kontrol (gambar dapat
                      menggalami pengecilan maupun pembesaran)




Stretch




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



                                                                                                                   42
                          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

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




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

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



                                                                                                                 44
                MyPicture.PSet (i, -Cos(i * 3.14 / 180))
             Next i
             End Sub

Berikut ini adalah picturebox sebagai kontainer.




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

                             Digunakan untuk menentukan apakah grafik yang dihasilkan dengan metoda pengambaran (Line,
AutoRedraw
                             Circle, PSet) akan dijadikan sebagai bitmap yang tetap.
                             Digunakan untuk menentukan apakah ukuran kontrol otomatis disesuaikan dengan ukuran objek
AutoSize
                             picture.
BorderStyle                  sda
                             Digunakan untuk menentukan apakan event Validate di aktifkan ketika kontrol akan kehilangan fokus
CauseValidation
                             (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)
                             Menentukan jenis modus yang digunakan pada saat pengambaran grafik dalam picture dimana
DrawMode                     merupakan interaksi antara warna latar belakang dengan warna garis sehingga menghasilkan warna
                             baru.
DrawStyle                    Menentukan style garis yang digunakan dalam mengambar garis.
DrawWidth                    Menentukan ukuran garis pengambaran
                             Menentukan apakah kontrol label dapat menerima event yang dibuat oleh pemakai, misalnya event
Enabled
                             Click, MouseDown, MouseUp, dll.
FillColor                    Menentukan warna pengisian grafik
                             Menentukan pola pengisian grafik
FillStyle

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



                                                                                                                             45
                  Digunakan untuk menentukan warna tulisan




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



                                                                                                                   46
                            sebelumnya.

                            Digunakan untuk menentukan nilai koodinat horizontal paling kiri, anda dapat menggunakan properti ini
ScaleLeft
                            untuk menentukan koordinat paling kiri dari suatu sumbu X.
                            Digunakan untuk menentukan nilai koodinat vertikal paling atas, anda dapat menggunakan properti ini
ScaleTop
                            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.
                            Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang berkaitan dengan kontrol
Tag
                            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
                                          Mengambarkan sebuah lingkaran dengan berpusat pada koordinat x,y dan jari-jari r
Circle(x,y),r,warna,awal,akhir,Aspek      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
                                          Mencetak dot (titik) pada koordinat tertentu pada Form, Picturebox, dan Printer, pada
PSet (x,y)
                                          koordinat yang ditentukan
PSet Step (x,y)                           Mencetak dot (titik) pada koordinat relatif terhadap posisi dot sebelunnya.
                                          Mendapatkan warna dot (titik) tertentu pada layar
                                          Contoh :
Point(x,y)
                                          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




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



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



                                                                                                                            48
                          Menentukan apakah kontrol label dapat menerima event yang dibuat oleh pemakai, misalnya event
Enabled
                          Click, MouseDown, MouseUp, dll.
Height                    Digunakan untuk menentukan tinggi dari kontrol
Index                     Digunakan untuk menentukan nomor index, jika kontrol tersebut merupakan kontrol array.
                          Digunakan untuk menentukan besar perubahan Value ketika pemakai melakukan klik di antara tanda
LargeChange               Arah dan Bar, atau ketika pemakai melakukan penekanan tombol PgUp dan PgDn pada saat aktif di
                          ScrollBar.
Left                      Digunakan untuk menentukan jarak kiri kontrol dari kontainernya.
                          Digunakan untuk menentukan nilai Maksimal dari kontrol ScrollBar, ketika Bar rapat ke kanan atau
                          ketika pemakai melakukan penekanan tombol End pada saat aktif di ScrollBar.


Max




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


Min




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



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

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


BackColor




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


BorderColor




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


BorderStyle




                       Menentukan ukuran ketebalan garis border.



BorderWidth




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



DrawMode




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


FillColor




                          Menentukan jenis arsiran yang digunakan untuk isian kontrol Shape. Lihat gambar pada properti
FillStyle
                          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.
                          Digunakan untuk menentukan bentuk Shape (0 - Rectangle, 1 - Square, 2 - Oval, 3 - Circle, 4 -
Shape
                          Rounded Rectangle, 5 - Rounded Square)
                          Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang berkaitan dengan kontrol
Tag
                          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.



m) 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.
                          Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang berkaitan dengan kontrol
Tag
                          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

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


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




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




       Properti                                                               Fungsi
Appearance              Digunakan untuk menentukan penampilan dari kontrol (0 - Flat, 1 - 3D)
BackColor               Digunakan untuk menentukan warna latarbelakang kontrol
                        Digunakan untuk menentukan apakan event Validate di aktifkan ketika kontrol akan kehilangan fokus
CauseValidation
                        (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
                        Menentukan apakah kontrol label dapat menerima event yang dibuat oleh pemakai, misalnya event
Enabled
                        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.
                        Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse berada diatas kontrol
MouseIcon
                        label tersebut, properti ini berarti bila properti MousePointer diset menjadi (99 - Custom)
                        Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse pointer berada diatas
MousePointer
                        kontrol label tersebut.
                        Digunakan untuk menentukan urutan tabindex, 0 adalah kontrol yang pertama mendapat fokus jika form
TabIndex
                        dijalankan. Properti ini efektif jika setting properti TabStop adalah True
                        Digunakan untuk menentukan apakah textbox dapat menerima fokus karena penekanan tombol TAB
TabStop
                        oleh pemakai (False, True)
                        Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang berkaitan dengan kontrol
Tag
                        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.

p)    FileListBox



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




       Properti                                                               Fungsi
Appearance              Digunakan untuk menentukan penampilan dari kontrol (0 - Flat, 1 - 3D)
                        Digunakan untuk menentukan apakah FileListBox dapat menampilkan file dengan atribut Archive atau
Archive
                        tidak.
BackColor               Digunakan untuk menentukan warna latarbelakang kontrol
                        Digunakan untuk menentukan apakan event Validate di aktifkan ketika kontrol akan kehilangan fokus
CauseValidation
                        (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
                        Menentukan apakah kontrol label dapat menerima event yang dibuat oleh pemakai, misalnya event
Enabled
                        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.
                        Digunakan untuk menentukan apakah FileListBox dapat menampilkan file dengan atribut Hidden atau
Hidden
                        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.
                        Digunakan untuk menentukan apakah FileListBox dapat menampilkan file dengan atribut Normal atau
Normal
                        tidak.
                        Digunakan untuk menentukan icon mouse yang digunakan ketika pointer mouse berada diatas kontrol
MouseIcon
                        label tersebut, properti ini berarti bila properti MousePointer diset menjadi (99 - Custom)
                        Digunakan untuk menentukan bentuk pointer yang digunakan ketika mouse pointer berada diatas
MousePointer
                        kontrol label tersebut.
                        Digunakan untuk menentukan apakah item dalam listbox dapat dipilih lebih dari satu atau tidak (0 -
MultiSelect             None, 1 - Simple, 2 - Extended) Perbedaan antara 1 - Simple dengan 2 - Extended, adalah pada Simple
                        pemilihan beberapa item sekaligus tidak dapat menggunakan bantuan Shift.
                        Digunakan untuk menentukan pola wildcard yang digunakan untuk membatasi file yang akan
Pattern
                        ditampilkan dalam kontrol (*.* semua file, *.bmp, ?A*.jpg)
                        Digunakan untuk menentukan apakah FileListBox dapat menampilkan file dengan atribut ReadOnly atau
ReadOnly
                        tidak.
                        Digunakan untuk menentukan apakah FileListBox dapat menampilkan file dengan atribut System atau
System
                        tidak.
                        Digunakan untuk menentukan urutan tabindex, 0 adalah kontrol yang pertama mendapat fokus jika form
TabIndex
                        dijalankan. Properti ini efektif jika setting properti TabStop adalah True
                        Digunakan untuk menentukan apakah textbox dapat menerima fokus karena penekanan tombol TAB
TabStop
                        oleh pemakai (False, True)



                                                                                                                        54
                         Properti ini dapat digunakan sebagai tempat menyimpan data sementara yang berkaitan dengan kontrol
Tag
                         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




                                                                                                                        55
                                                   Bab IV
                          Fungsi Bantu pada Visual Basic dan Visual Basic Aplication



4.1. Visual Basic Application
a)   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 :

           Intrinsic atau System-defined konstanta yang disediakan oleh suatu aplikasi atau control. Konstanta Visual
            Basic terdaftar pada Visual Basic (VB), Visual Basic for Application (VBA), dan Data Access (DAO).

           ymbolic atau User-defined konstanta adalah dideklarasikan dengan menggunakan statement Const.

         Membuat Konstanta Anda Sendiri
         Syntax untuk deklarasi konstanta adalah :
          [Public|Private] Const constantname [As type] = expression
 Contoh :
         Const Pi = 3.12159265358979
         Public Const Planet As Integer= 9
         Const ReleaseDate = #7/1/95#
         Scope dari suatu user-defined konstanta

           Membuat suatu konstanta yang mana hanya ada dalam suatu procedure, deklarasikan dia dalam procedure
            tersebut

           Membuat suatu konstanta berlaku pada semua procedure dalam suatu module, deklarasikan dia pada
            bagian deklarasi di module tersebut

           Membuat suatu konstanta berlaku pada semua aplikasi, deklarasikan dia dengan keyword Public sebelum
            kata Const.

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




                                                                                                                     56
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



                                                                                                               57
            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

c)   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
interaksi yang berikutnya.




                                                                                                                58
4.2. Fungsi Bantu pada Visual Basic
a)   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)




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


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




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



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

b)     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) dan Minute(time) dan Second(time)



                                                                                                            63
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) dan Month(date) dan 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)
          Ekspresi numerik yang merupakan jumlah dari interval yang ingin dijumlahkan. Nilai Positif menunjukan (tanggal
 number
          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




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


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




a)   Deklarasi Variabel Pada Module




                                                                                                          65
         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


b)   Deklarasi Fungsi dan Sub pada module
         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.



c)   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 :
          Procedure memungkinkan anda untuk memecahkan program anda pada unit logika yang lebih kecil,
           sehingga anda dapat dengan mudah melakukan proses debug dari pada jika keseluruhan program tanpa
           menggunakan procedure.

          Procedure yang digunakan dalam suatu program dapat bertindak sebagai suatu blok yang dibangun untuk
           program lain dengan sedikit perubahan atau tanpa perubahan sama sekali.

Ada beberapa jenis procedure yang digunakan dalam Visual Basic

          Sub procedure yang tidak menggembalikan nilai

          Function procedure yang mengembalikan nilai

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




Sub Procedure
Syntax penulisan Sub procedure:
           [Private|Public][Static]Sub namaprosedur (argumen-argumen)


                                                                                                              66
                     pernyataan-pernyataan

           End Sub
Setiap kali procedure dipanggil, maka pernyataan-pernyataan yang berada di antara Sub dan End Sub akan
dijalankan.
Argumen pada procedure adalah nilai yang akan dilewatkan saat pemanggilan procedure.
Di Visual Basic Sub Procedure dapat dibagi atas dua yaitu :
          General Procedure, procedure yang diaktifkan oleh aplikasi

          Event Procedure, Procedure yang diaktifkan oleh system sebagai respon terhadap event.
Contoh, sub Tengah yang dapat digunakan untuk menampilkan form ketengah Layar, dimana x adalah parameter
yang merupakan form yang akan dibuat ketengah layar.
Sub Tengah(x As Form)
         x.Top = (Screen.Height - x.Height) \ 2
         x.Left = (Screen.Width - x.Width) \ 2
End Sub

Private Sub Form_Load()
         Call Tengah(Me)
End Sub

d)   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 :
          Umumnya anda dapat memanggil suatu function dengan mengikutkan nama function sisi kanan dari
           statement atau ekspresi. (returnvalue = function()).

          Function memiliki type data seperti suatu variabel. Ini menentukan type yang dari nilai yang dikembalikan.

          Nilai kembali dimasukkan ke namafunction itu sendirinya, dan suatu function dapat menjadi bagian dari
           suatu ekspresi yang panjang.




4.4. Mencetak Isi Form ke Printer
Untuk mencetak isi Form ke Printer anda dapat menggunakan Metoda PrintForm pada object Form.
Contoh :
Private Sub Command1_Click()



                                                                                                                        67
             Me.PrintForm
End Sub
a)   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.

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

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

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

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



                                                                                                              68
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

f)   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, _




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




                                                   Bab V
                                       MDI Form, Menu dan Objek Printer



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

5.2. Membuat suatu Aplikasi MDI pada Visual Basic

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




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




     2.     Menentukan StartUp Objek
            Pada Menu Tools, pilih Command Options, pilih Tab Project, Tentukan StartUp Object ke MDI form yang
            telah ditambahkan.




a)   Karakteristik dari MDI Form

           Semua child form tidak dapat dipindahkan keluar dari MDI Form.



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

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

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

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




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




a)   Membuat Garis Pemisah antar Menu
Anda dapat menggunakan tanda - (karakter hypen) untuk membuat garis pemisah antar menu pada Caption.




                                                                                                        73
Sehingga akan menghasilkan menu sebagai berikut :




b)   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
c)   Membuat Menu yang memiliki tanda Check
          Anda dapat membuat menu yang memiliki tanda Check dengan memanfaatkan option Checked pada Menu
Editor.


                                                                                                     74
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




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

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




5.5. Memahami Objek Printer




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

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

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




                                                                                                                77
Contoh :
              Printer.PaperSize = vbPRPSLetter
c)   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
d)   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"
e)   Menentukan orientasi pencetakkan
        Anda dapat menggunakan properti Orientation untuk menentukan orientasi pencetakkan Portrait atau
Landscape (1-vbPRORPortrait, 2-vbPRORLandscape).
Contoh :



                                                                                                                      78
              Printer.Orientation = vbPRORLandscape

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

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




                                                                                                             79
                                                    Bab VI
                                           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.

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




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

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




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

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

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

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




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




                                                                                                      83
Membuat Tabel anda yang pertama
    1.     Klik kanan pada "Properties" yang berada pada Database Window

    2.     Pilih New Table, sehingga akan muncul kotak dialog Table Structure




    3.     Pada Table Name ketikkan nama tabel yang ingin anda buat, misalnya Forum

    4.     Klik pada Add Field untuk mengetikkan field-field tabel anda, dan akan muncul kotak dialog Add Field, Name
           ketikkan nama field anda, pilihlah Type data yang bersesuaian dan ukuran dari field tersebut




         Anda dapat menentukan apakah field tersebut adalah AutoIncrField (untuk type Long), AllowZeroLength (untuk
type Text), Required.




                                                                                                                  84
Klik pada Ok, dan lakukan hal yang sama untuk field berikutnya, jika telah selesai klik pada Close.




     5.   Langkah selanjutnya adalah membuat Primary Key untuk tabel anda dengan melakukan klik pada tombol
          Add Index. Pada Name ketikkan nama Index, dan double klik pada field yang ingin di Index pada kotak
          Available Fields.




          Anda dapat menentukan option Primary, Unique dan IgnoreNulls, klik OK jika telah selesai, dan
          akhirnya Close.




                                                                                                                85
    6.    Akhirnya klik pada Build The Table.
Mengetik data pada Visual Data Manager
    1.    Pilih jenis Table type recordset

    2.    Pada Database Windows klik kanan pada tabel yang ingin anda ketik datanya. Dalam hal ini adalah tabel
          Forum, dan pilih Open, klik Add dan mulai mengetikkan data anda, dan akhirnya Update.

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




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




                                                                                                                   87
6.4. Mengenal Data kontrol

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

b)      Properti pada Data kontrol
              Properti                                                    Keterangan
Align                            Menentukan pemerataan kontrol pada Form (0-None, 1- Top, 2 - Bottom, 3 - Left, 4 - Right)
                                 Menentukan metoda yang akan otomatis diaktifkan ketika posisi pointer mencapai BOF (1 -
BOFAction
                                 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
                                 Menentukan jenis kursor yang digunakan (0 - DefaultCursor, 1 - ODBCCursor, 2 -
DefaultCursorType
                                 ServerSideCursor)
DefaultType                      Menentukan jenis data yang digunakan (2 - UseJext, 1 - UseODBC)
                                 Menentukan metoda yang akan otomatis diaktifkan ketika posisi pointer mencapai BOF (1 -
EOFAction
                                 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




                                                                                                                           88
                                     (khusus untuk Dynaset dan Snapshot)

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

6.6. Metoda-metoda pada Data Kontrol
        Sebagaimana objek-objek standar lainnya, objek Data kontrol menyediakan berbagai metoda yang dapat anda
gunakan.

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

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



                                                                                                                                 89
         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

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

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




e)     Mengambil nilai field dari record aktif



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

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

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



                                                                                                                      91
     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

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

i)   Melakukan refresh data pada Recordset
Anda dapat menggunakan metoda Refresh untuk menutup dan membentuk ulang isi Recordset.

Contoh :
              Data1.Refresh

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




                                                                                                            92
     2.     Form yang mengandung data control di unload

     3.     Program menjalankan statement End.



6.7. Event Pada Data Kontrol

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

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


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




                                                                                                                93
       Anda dapat melakukan evaluasi terhadap Action untuk mendapatkan aksi yang membangkitkan event Validate
tersebut, misalnya vbDataActionAddNew, vbDataActionBookmark, vbDataActionCancel, dll.

CboPrinters




                                                                                                          94
                                                   Bab VII
                                    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)



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

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


                                                                                                           96
        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

7.2. Masalah pada Optimistik Locks


                                                                                                        97
        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



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

7.3. Recordset pada lingkungan MultiUser

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

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




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


8.1. Data Definition Language (DDL)

a)     Membuat Tabel Baru
          CREATE TABLE table (field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...]]
          [, CONSTRAINT multifieldindex [, ...]])
          Perintah CREATE TABLE digunakan untuk mendefinisikan suatu tabel baru beserta fieldnya dan konstraint,
jika NOT NULL disebutkan, maka record baru membutuhkan data yang sah untuk field tersebut.
          CONSTRAINT clause dapat digunakan untuk membuat berbagai batasan pada field termasuk PRIMARY KEY,
anda dapat juga menggunakan perintah CREATE INDEX untuk membuat index dan PRIMARY KEY pada tabel yang
ada. CONSTRAINT clause menyerupai CREATE INDEX, tetapi dapat digunakan untuk membuat Relation antar tabel.
          CONSTRAINT name {PRIMARY KEY | UNIQUE | NOT NULL |
          REFERENCES foreigntable [(foreignfield1, foreignfield2)]}
dimana :
              table                                                 nama tabel yang akan dibuat
field1, field2                 nama field
Type                           jenis data pada masing-masing field
size                           ukuran field untuk jenis data TEXT dan Binary
index                          untuk membuat CONSTRAINT

Jenis data pada database JET
    Jenis Data               Ukuran Penyimpanan                                           Keterangan
BINARY                1 byte per karakter                 Menyimpan segala jenis data sebagaimana adanya tanpa translasi.
BIT                   1 byte                              Menyimpan nilai Yes atau No.
BYTE                  1 byte                              Menyimpan nilai integer 0 s/d 255
                                                          Menyimpan nilai numerik yang otomatis bertambah setiap record baru
COUNTER               4 byte
                                                          ditambahkan.
                                                          Menyimpan suatu nilai skalar antara – 922,337,203,685,477.5808 dan
CURRENCY              8 byte
                                                          922,337,203,685,477.5807
DATETIME              8 byte                              Menyimpan suatu nilai tanggal dan waktu antara tahun 100 s/d 9999
GUID                  128 byte                            Menyimpan suatu nomor identifikasi unik yang digunakan untuk RPC
                                                          Menyimpan suatu nilai floating point single-precision dengan jangkauan –
SINGLE                4 byte                              3.402823E38 s/d – 1.401298E-45 untuk nilai negatif , 1.401298E-45 s/d
                                                          3.402823E38 untuk nilai positif dan 0.
                                                          Menyimpan suatu nilai floating point double-precision dengan jangkauan
DOUBLE                8 byte
                                                          – 1.79769313486232E308 s/d – 4.94065645841247E-324 untuk nilai



                                                                                                                             100
                                                  negatif, 4.94065645841247E-324 s/d 1.79769313486232E308 untuk nilai
                                                  positif, dan 0
SHORT            2 byte                           Menyimpan suatu nilai short integer antara – 32,768 dan 32,767.
                                                  Menyimpan suatu nilai long integer antara – 2,147,483,648 dan
LONG
                                                  2,147,483,647.
LONGTEXT         1 byte per karakter              Kosong s/d maksimal 1.2 gigabytes.
LONGBINARY       Sesuai dengan kebutuhan          Kosong s/d maksimal 1.2 gigabytes. Digunakan untuk objek OLE.
TEXT             1 byte per karakter              0 s/d 255 karakter

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

Primary Key (P_Key) dengan field ForumID
Perintah SQL :
CREATE TABLE FORUM (
            ForumID TEXT(25) NOT NULL CONSTRAINT P_KEY PRIMARY KEY,
            Keterangan TEXT(50),
            Alamat TEXT(50) NOT NULL);
atau
CREATE TABLE FORUM (
            ForumID TEXT(25) NOT NULL ,
            Keterangan TEXT(50),
            Alamat TEXT(50) NOT NULL,
            CONSTRAINT P_KEY PRIMARY KEY (ForumID));
Tabel Status
    Nama Field            Type             Size             AutoIncrField         AllowNulls            Require
Status            Byte              1                                        Tidak                Ya
Keterangan        Text              50

Primary Key (P_Key) dengan field Status
Perintah SQL :
CREATE TABLE STATUS (
            Status BYTE NOT NULL CONSTRAINT P_KEY PRIMARY KEY,
            Keterangan TEXT(50));
Tabel Peserta
    Nama Field            Type             Size             AutoIncrField         AllowNulls            Require
Email             Text              25                                       Tidak                Ya
Nama              Text              50
Alamat            Text              50
Kota              Text              50
Telepon           Text              25
Homepage          Text              50
Perusahaan        Text              50
TanggalGabung     Date              8

Primary Key (P_Key) dengan field Email
Perintah SQL :


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


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

Primary Key (P_Key) dengan field ID
Berserta Relation terhadap tabel PESERTA, FORUM dan STATUS




       Nama Field (Foreign key)                 Foreign Tabel                          Foreign Field
Email                              Peserta                                 Email
ForumID                            Forum                                   ForumID
Status                             Status                                  Status

Perintah SQL :


                                                                                                                 102
CREATE TABLE AKTIFITAS (
         ID COUNTER CONSTRAINT P_KEY PRIMARY KEY,
         Email TEXT(25) NOT NULL CONSTRAINT AktifitasPeserta REFERENCES PESERTA(Email),
         ForumID TEXT(25) NOT NULL CONSTRAINT AktifitasForum REFERENCES FORUM (ForumID),
         Status BYTE CONSTRAINT AktifitasStatus REFERENCES STATUS(Status));
b)      Membuat Index
        CREATE [ UNIQUE ] INDEX indexON table (field [ASC|DESC][, field [ASC|DESC], ...])[WITH { PRIMARY |
        DISALLOW NULL | IGNORE NULL }]

Membuat suatu index pada tabel yang telah ada.
dimana :
index                 nama dari index yang akan dibuat
table                 nama dari tabel yang akan mengandung index tersebut
field                 nama dari field yang akan di index
            Gunakan UNIQUE untuk membuat nilai unik terhadap field tertentu sehingga tidak memungkinkan duplikasi
data. Gunakan WITH clause untuk menentukan apakah :

            Tidak memperbolehkan pemasukan nilai Null pada field yang diindex dengan menggunakan option
             DISALLOW NULL.

            Menghindarkan record dengan nilai Null pada field yang diindex untuk diikutsertakan dalam index.

            Membuat index sebagai PRIMARY, setiap tabel hanya dapat memiliki satu index PRIMARY.
            Contoh membuat Index S_KEY berdasarkan Nama pada tabel PESERTA, perintah SQL DDL-nya adalah
sebagai berikut :
                CREATE INDEX S_KEY ON PESERTA(NAMA);

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

Melakukan modifikasi terhadap rancangan tabel yang telah ada.
dimana :
Table             Nama dari tabel
Field             Nama field yang akan ditambah (ADD), dihapus (DROP)
Type              Type field yang akan ditambahkan
Size              Ukuran field yang akan ditambahkan
Index             Perintah CONSTRAINT clause
indexname         Nama index yang akan dihapus


Contoh menambahkan field Keterangan Text(50) pada tabel aktifitas :
ALTER TABLE Aktifitas ADD COLUMN Keterangan Text(50);


d)      Menghapus Table atau Index
             DROP {TABLE table | INDEX index ON table}




                                                                                                                103
Menghapus tabel yang ada dalam database, atau index dari suatu tabel
table    nama tabel yang akan dihapus atau tabel dimana index berada
index    nama index yang akan dihapus

Contoh menghapus tabel TEMP
          DROP TABLE Temp;

          Telah kita ketahui bahwa perintah SQL dibagi atas dua kelompok besar yaitu DDL (Data Definition Language)
dan DML (Data Manipulation Language). Pada DML, terbagi atas APPEND, UPDATE, DELETE, dan SELECT query
yang dapat digunakan untuk pengolahan data.

8.2. Menambah data dengan APPEND query
            INSERT INTO target [(field1[, field2[, ...]])]
            VALUES (value1[, value2[, ...])

Menambah suatu record ke table, hal ini dikenal sebagai append query.
Contoh :
 KodeAnggota        Nama                         Alamat            Telepon Limit     Daftar               Blacklist
SD001        Susan Dewichan         Jl. Thamrin No. 95 Medan      4513490 3      23-Sept-2001           False

INSERT INTO Anggota (KodeAnggota, Nama, Alamat, Telepon, Limit, BlackList)
VALUES ('SD001','Susan Dewichan','Jl. Thamrin No. 95','4513490',3,#23-Sept-2001#);


8.3. Menghapus data dengan DELETE query
           DELETE FROM table
           WHERE criteria
          Menghapus satu atau lebih record dari tabel yang berada di daftar FROM clause yang memenuhi WHERE
clause.
          Pada tabel yang memiliki hubungan one-to-many relationship dengan tabel lain. Operasi Cascade delete dapat
menyebabkan record lain yang berada pada sisi many ikut terhapus ketika penghapusan di lakukan terhadap data
pada sisi one.
Catatan: Data yang telah dihapus dengan delete query, tidak dapat dibatalkan. Lakukan backup terhadap data anda
setiap saat. Jika anda salah menghapus, maka anda dapat mengambil kembali dari backup.
Contoh : DELETE FROM Anggota WHERE BlackList;

8.4. Memperbaiki Data dengan UPDATE query
            Mengubah nilai pada field-field yang ditentukan pada tabel berdasarkan kriteria tertentu.

            Syntax :

            UPDATE table
            SET newvalue
            WHERE criteria;

Penting :· UPDATE tidak menghasilkan suatu himpunan hasil. Juga, setelah anda mengupdate record dengan
menggunakan update query, anda tidak dapat membatalkan operasi tersebut. Jika anda ingin mengetahui record



                                                                                                                104
mana saja yang akan terupdate, pertama anda perlu melakukan select query dengan kriteria yang sama.
· Lakukan backup terhadap data anda setiap saat. Jika anda salah menghapus, maka anda dapat mengambil kembali
dari backup.
Contoh :
               UPDATE Anggota SET BlackList = True WHERE KodeAnggota = 'SD001';


8.5. Mengambil Data dengan SELECT query
       Memerintahkan kepada Microsoft Jet Engine untuk mengembalikan data dari database dalam bentuk
recordset.
       Syntax yang paling minimum dari SELECT statement adalah : SELECT fields FROM table

       dimana fields adalah daftar dari field-field yang akan diambil dari tabel, anda dapat menggunakan tanda *
(Asterisk) untuk menyatakan seluruh field dari tabel.
Contoh :
               SELECT KodeAnggota, Nama, Alamat, Telepon, Limit, Daftar, Blacklist FROM Anggota;
Atau
               SELECT * FROM Anggota;


8.6. Menganti nama kolom recordset dengan reserved word AS
       Ketika recordset terbentuk, Microsoft Jet Engine menggunakan nama field sebagai nama objek field pada
recordset, anda dapat menentukan nama objek field tersebut dengan reserved word AS.
Contoh :
               SELECT KodeAnggota, Nama, Daftar As TanggalDaftar FROM Anggota;

       dalam hal ini nama objek field TanggalDaftar akan digunakan untuk field Daftar.
       Anda dapat menggunakan AS untuk menentukan nama objek field pada recordset yang merupakan hasil dari
fungsi Agregate maupun ekspresi.
Contoh :
               SELECT Count(*) AS JlhAnggota FROM Anggota;

       Akan mendapat suatu recordset dengan field JlhAnggota dan record tunggal yang berisi jumlah anggota yang
terdaftar pada tabel Anggota.

8.7. Membatasi hasil query dengan WHERE clause
           SELECT fieldlist
           FROM tableexpression
           WHERE criteria

       Sebagaimana pemakaian WHERE clause pada UPDATE dan DELETE query, anda dapat menggunakan
WHERE clause untuk membatasi data yang dikembalikan berdasarkan kriteria tertentu.

Contoh :
               SELECT * FROM Anggota WHERE TanggalDaftar <= #01-Jan-2001#;




                                                                                                           105
8.8. Mengurut hasil query dengan ORDER BY clause
           SELECT fieldlist
           FROM table
           WHERE selectcriteria
           [ORDER BY field1 [ASC | DESC ][, field2 [ASC | DESC ]][, ...]]]

        Anda dapat menggunakan ORDER BY clause untuk menentukan urutan data hasil query berdasarkan field
tertentu, pada defaultnya adalah Ascending kalau tidak disebutkan ASC ataupun DESC.
Contoh :
             SELECT * FROM Anggota ORDER BY Nama;
             SELECT * FROM Anggota WHERE TanggalDaftar <= #01-Jan-2001# ORDER BY Nama;

8.9. Mengetahui statistik data dengan Fungsi Agregate
        Anda dapat menggunakan fungsi-fungsi Agregate seperti AVG (rata-rata), COUNT (jumlah data), MIN atau
MAX, SUM (hasil jumlah), StDEV atau StDEVP (standard deviasi sample/populasi), VAR atau VARP (variasi sample /
populasi) untuk mendapatkan nilai statistifk field terentu.
Contoh :
             SELECT Sum(Denda) AS JlhDenda FROM Transaksi Where Kembali = #20-Sep=2001#;

        Akan mendapat suatu recordset dengan field JlhDenda dan record tunggal yang berisi jumlah perhitungan field
denda pada tanggal 20 September 2001 dari tabel Transaksi.

8.10.      Meringkas data dengan GROUP BY clause
           SELECT fieldlist
           FROM table
           WHERE criteria
           [GROUP BY groupfieldlist]

        Anda dapat menggunakan ORDER BY clause untuk meringkas record yang nilai fieldnya sama menjadi satu
record dikombinasikan dengan fungsi Agregate untuk mendapatkan statistik dari masing-masing ringkasan.
        Misalnya kita ingin mendapatkan suatu daftar recordset yang berisi jumlah denda harian berdasarkan tanggal
pengembalian (Kembali), maka perintah SQL adalah :
SELECT Kembali, Sum(Denda) AS JlhDenda FROM Transaksi ORDER BY kembali;


8.11.      Membatasi data yang telah diringkas dengan HAVING clause
           SELECT fieldlist
           FROM table
           WHERE selectcriteria
           GROUP BY groupfieldlist
           [HAVING groupcriteria]

        Jika anda menggunakan WHERE clause untuk membatasi data hasil query berdasarkan kriteria tertentu, maka
HAVING clause digunakan untuk membatasi data setelah GROUPING dilakukan.
Contoh :
             SELECT Kembali, Sum(Denda) AS JlhDenda FROM Transaksi
              ORDER BY kembali
              HAVING Sum(Denda) > 10000;


                                                                                                              106
Mendapatkan daftar hasil jumlah denda harian, dimana yang dikembalikan hanya jumlah denda yang diatas 10000.


8.12.      Menggunakan predikat ALL, DISTINCT, DISTINCT ROW dan TOP
           SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]
           FROM table

        Secara default kalau tidak dituliskan, maka predikat ALL akan digunakan. Anda dapat menggunakan predikat
DISTINCT untuk mengambil satu record dari beberapa record yang memiliki nilai yang sama.
Contoh :
               SELECT DISTINCT Aktor FROM CD;

        Akan menghasilkan daftar nama Aktor dari tabel CD yang kita miliki. pemakaian predikat DISTINCT dalam hal
ini untuk memastikan hanya 1 aktor terambil dari beberapa CD yang mungkin memiliki aktor utama yang sama.
        Pemakaian predikat TOP untuk mendapatkan n record atau n persen record dari daftar teratas.
Misalnya kita ingin mendapatkan 10 kode CD yang paling sering diTransaksi oleh Anggota.

SELECT TOP 10 KodeCD, Count(*) FROM Transaksi
 GROUP BY KodeCD
 ORDER BY Count(*) DESC;


Syntax penulisan kongkrit dari SELECT statement
           SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [, [table.]field2 [AS alias2] [, ...]]}
           FROM tableexpression [, ...]
           [WHERE... ]
           [GROUP BY... ]
           [HAVING... ]
           [ORDER BY... ]


8.13.      Mengambil kolom dari dua atau lebih tabel dengan Operasi INNER JOIN
        Kadang-kadang kita perlu melakukan kombinasi kolom-kolom dari beberapa tabel menjadi suatu recordset
tunggal dimana yang memiliki nilai yang sama pada kolom tertentu.
Pada operasi INNER JOIN akan mengabungkan record-record yang memiliki nilai sama pada kolom tertentu pada
kedua tabel.

FROM table1 INNER JOIN table2 ON table1.field1 compopr table2.field2
Perhatikan kembali tabel-tabel pada Rental.Mdb modul sebelumnya :
Tabel Transaksi
 Nama Field          Type
NoTransaksi Long
Tanggal       DateTime
KodeAnggota Text
KodeCD        Text
Kembali       DateTime



                                                                                                                   107
Denda           Currency

Tabel CD
      Nama Field             Type
KodeCD                     Text
Judul                      Text
Kategori                   Text
Aktor                      Text
Harga                      Currency
Daftar                     DateTime

Tabel Anggota
  Nama Field          Type
KodeAnggota      Text
Nama             Text
Alamat           Text
Telepon          Text
Limit            Byte
Daftar           DateTime

Misalnya kita ingin mengambil suatu recordset yang berisi kolom-kolom berikut :
       Kolom            Tabel sumber       Kriteria
Tanggal                Transaksi
Judul                  Transaksi
Nama                   Anggota
Denda                  Transaksi       Not Null

        Dalam hal ini kita akan menggambil data dari dua tabel, yaitu tabel Transaksi, dan tabel Anggota, dimana
dalam pengambilan tersebut KodeAnggota pada tabel Transaksi harus bersesuaian dengan KodeAnggota pada tabel
Anggota, sehingga FROM clause-nya dapat ditulis menjadi :
FROM Transaksi INNER JOIN
  Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota

Sehingga Perintah SQL adalah sebagai berikut :
SELECT Transaksi.Tanggal, Transaksi.KodeAnggota, Anggota.Nama, Transaksi.Denda
 FROM Transaksi INNER JOIN
 Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota
 WHERE NOT Denda Is NULL;

Pada perintah SELECT yang menggambil kolom lebih dari satu tabel, kita perlu menuliskan nama Tabel dan Field
yang dipisahkan dengan dot (.).

Anda dapat melakukan nested untuk mengambil data lebih dari dua tabel
Misalnya kita ingin mengambil suatu recordset yang berisi kolom-kolom berikut :
       Kolom              Tabel sumber                                       Kriteria
Tanggal                Transaksi
Judul                  CD



                                                                                                               108
Nama                    Anggota
Harga                   CD
        Dalam hal ini kita akan menggambil data dari tiga tabel, yaitu tabel Transaksi, tabel CD dan tabel Anggota,
dimana dalam pengambilan tersebut KodeCD pada tabel Transaksi harus bersesuaian dengan KodeCD pada tabel
CD, dan KodeAnggota pada tabel Transaksi harus bersesuaian dengan KodeAnggota pada tabel Anggota, sehingga
FROM clause-nya dapat ditulis menjadi :
FROM (Transaksi INNER JOIN Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota) INNER JOIN CD ON
Transaksi.KodeCD =CD.KodeCD;
Atau

FROM (Transaksi INNER JOIN CD ON Transaksi.KodeCD =CD.KodeCD) INNER JOIN Anggota ON
Transaksi.KodeAnggota = Anggota.KodeAnggota ;
dan perintah SQLnya adalah sebagai berikut :
            SELECT Transaksi.NoTransaksi, CD.Judul, CD.Harga, Anggota.Nama
            FROM (Transaksi INNER JOIN Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota)
            INNER JOIN CD ON Transaksi.KodeCD =CD.KodeCD;
atau
            SELECT Transaksi.NoTransaksi, CD.Judul, CD.Harga, Anggota.Nama
            FROM (Transaksi INNER JOIN CD ON Transaksi.KodeCD =CD.KodeCD)
            INNER JOIN Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota ;


8.14.      Operasi LEFT JOIN, RIGHT JOIN
        Jika pada operasi INNER JOIN, recordset yang dihasilkan adalah data-data yang memiliki nilai yang
bersesuaian pada kolom tertentu, sedangkan operasi OUTER JOIN seperti LEFT JOIN dan RIGHT JOIN dapat
digunakan untuk mengambil seluruh data dari suatu tabel walaupun pada tabel lainnya tidak ada data yang
bersesuaian.
Contoh :
             SELECT Transaksi.Tanggal, Transaksi.KodeAnggota, Anggota.Nama, Transaksi.Denda
              FROM Transaksi LEFT JOIN
              Anggota ON Transaksi.KodeAnggota = Anggota.KodeAnggota
              WHERE NOT Denda Is NULL;
8.15.      Membuat union query dengan Operasi UNION
        Membuat suatu query union, yang mana mengabung hasil dari dua query atau tabel dengan menghilangkan
record duplikat, untuk mengikutkan record yang duplikat, anda dapat mencamtumkan ALL.
        [TABLE] query1 UNION [ALL] [TABLE] query2 [UNION [ALL] [TABLE] queryn [ ... ]]

        Misalnya kita memiliki dua tabel History (data transaksi bulan lalu), Transaksi (data transaksi sekarang), kita
ingin mengambil data dari dua tabel tersebut menjadi satu recordset.
             SELECT * FROM History UNION ALL SELECT * FROM Transaksi;

8.16.      Membuat CROSSTAB query dengan TRANSFORM statement




                                                                                                                  109
          TRANSFORM aggfunction
          selectstatement
          PIVOT pivotfield [IN (value1[, value2[, ...]])]

       Anda dapat menggunakan perintah TRANSFORM untuk membuat suatu Crosstab query yang merupakan
ringkasan data yang kolomnya berasal dari field atau ekspresi.
       Misalnya kita akan membuat ringkasan data jumlah transaksi peminjaman CD oleh masing-masing Anggota
(baris) pada masing-masing bulan JAN, FEB, ... (kolom)




Maka perintahnya adalah :
TRANSFORM Count(NoTransaksi)
SELECT Transaksi.KodeAnggota
FROM Transaksi
GROUP BY Transaksi.KodeAnggota
PIVOT Format([Tanggal],"mmm") In ("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

                                                 Bab IX
                                  Memahami ADODC melalui Data Form Wizard


       Data Form wizard adalah salah satu fasilitas Add In yang disediakan oleh Visual Basic untuk membuat form
isian data lokal maupun remote.
       Pada Modul ini kita akan memanfaatkan fasilitas ini untuk mempelajari kontrol ADODC yang diperkenalkan
sejak Visual Basic 6.0.




                                                                                                              110
9.1. Mengaktifkan fasilitas Data Form Wizard
       Anda dapat mengaktifkan fasilitas ini melalui menu Add Ins, Add Ins Manager, dan kemudian akan muncul
dialog box Add-In Manager, dan lakukan double klik pada VB 6 Data Form Wizard.




9.2. Menjalankan Data Form Wizard
Untuk mengaktifkan data form wizard anda dapat memilihnya langsung pada menu Add-Ins, sehingga ditampilkan
dialog box Data Form Wizard.


Lakukan klik Next, dan akan muncul dialog box berikutnya yaitu memilih jenis database yang akan digunakan, dalam
hal ini Access (data lokal), atau Remote (SQL server)

Misalnya kita memilih Access, dan akan muncul sebuah kotak dialog.

Tentukan nama database yang akan digunakan, misalnya C:\Program Files\Microsoft Visual
Studio\VB98\Nwind.mdb, dan lakukan klik pada tombol Next.
Dalam hal ini kita akan menggunakan ADO Data Control.

Tentukan Record Source yang akan digunakan, dalam hal ini kita menggunakan tabel Customers, kemudian tentukan
field-field yang akan digunakan, dan kolom yang akan di Sort, dan klik pada Next.

Selanjutnya tentukan tombol-tombol yang ingin ditambahkan pada form, dan klik pada next.

Akhirnya akan menghasilkan suatu form frmCustomer.
Untuk menjalankan frmCustomer, anda dapat melakukan pengaturan pada Project, Project Properties, dan lakukan
pemilihan frmCustomer pada bagian StartUp Object.

9.3. Mempelajari kontrol ADODC hasil Form Wizard.


                                                                                                               111
Lakukan klik kanan pada kontrol ADODC, dan pilih ADODC Properties




Hal yang paling paling penting dari suatu ADODC adalah Connection String. Connection String ini dapat dibuat
dengan command Build, atupun dengan mengetik sendiri.
PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\Nwind.mdb;
Misalnya dengan menggunakan command Build.
Dalam hal ini PROVIDER yang kita gunakan adalah Microsoft.Jet.OLEDB.3.51. Jenis provider ini sangat tergantung
kepada jenis database yang kita gunakan, dalam hal ini adalah *.mdb.

Catatan :
Microsoft.Jet.OLEDB.3.51, hanya mampu membuka sampai database Access 97, untuk membuka data Access 2000,
anda perlu mengunakan PROVIDER Microsoft.Jet.OLEDB.4.0.

Selanjutkan adalah menunjukkan database yang kita gunakan dalam connection. Klik pada Test Connection untuk
mencoba keberhasilan koneksi dengan sumber data.

Halaman Authentication dapat digunakan untuk login ke sistem database yang membutuhkan authentication User
Name dan Password, misalnya pada database SQL Server.

Halaman RecordSource digunakan untuk menentukan sumber data dari Table, Query ataupun suatu SQL Statement.
Dalam hal ini menggunakan SQL Statement :
select CustomerID,CompanyName,Address,City,ContactName,ContactTitle,Country,Fax,Phone,PostalCode,Region
from Customers

9.4. Bound TextBox pada ADODC


Hasil dari Data Form Wizard menggunakan metode bound kontrol terhadap kontrol ADODC. Untuk mempelajari cara
bound kontorl tersebut lakukan klik pada txtFields(0), dan pelajari properti-propertinya :




                                                                                                               112
Property                                               Value
DataSource                                             DatPrimaryRs
DataField                                              CustomerId
Dalam hal ini Property DataSource berisi DatPrimaryRs (nama dari kontrol ADODC), dan properti DataField berisi
CustomerId (nama dari field yang di bound)
Periksa juga txtFields(1), dst.

Mempelajari Koding yang dihasilkan
    Event datPrimaryRS_Error, merupakan event yang akan dibangkitkan ketika terjadi kesalahan pada proses
     data oleh ADODC.
Private Sub datPrimaryRS_Error(ByVal ErrorNumber As Long, Description As String, ByVal Scode As Long,
ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, fCancelDisplay As Boolean)
       'Ini merupakan tempat anda menempatkan kode error handling
       MsgBox "Data error event hit err:" & Description
End Sub


    Event datPrimaryRS_MoveComplete, merupakan event yang akan dibangkitkan ketika terjadi perubahan posisi
     record.
Private Sub datPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As
ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
       'Dalam hal ini akan menampilkan posisi record pada data kontrol
       datPrimaryRS.Caption = "Record: " & CStr(datPrimaryRS.Recordset.AbsolutePosition)
End Sub


    Event datPrimaryRS_WillChangeRecord, merupakan event yang akan dibangkitkan ketika akan terjadi
     perubahan pada record, yang dapat dipelajari dari parameter adReason, dan perubahan tersebut dapat
     dibatalkan dengan parameter adStatus.
Private Sub datPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal
cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
 'Merupakan tempat anda menempatkan kode validasi, ubah isi bCancel menjadi False untuk membatalkan
perubahan
 'Event ini akan dibangkitkan ketika terjadi hal seperti
 Dim bCancel As Boolean

 Select Case adReason
 Case adRsnAddNew
 Case adRsnClose
 Case adRsnDelete
 Case adRsnFirstChange
 Case adRsnMove
 Case adRsnRequery



                                                                                                                 113
 Case adRsnResynch
 Case adRsnUndoAddNew
 Case adRsnUndoDelete
 Case adRsnUndoUpdate
 Case adRsnUpdate
 End Select
 If bCancel Then adStatus = adStatusCancel
End Sub

 Event cmdAdd_Click, merupakan event untuk command button cmdAdd.
Private Sub cmdAdd_Click()
 On Error GoTo AddErr
 datPrimaryRS.Recordset.AddNew

 Exit Sub
AddErr:
 MsgBox Err.Description
End Sub

 Event cmdDelete_Click, merupakan event untuk command button cmdDelete
Private Sub cmdDelete_Click()
 On Error GoTo DeleteErr
 With datPrimaryRS.Recordset
  .Delete
  .MoveNext
  If .EOF Then .MoveLast
 End With
 Exit Sub
DeleteErr:
 MsgBox Err.Description
End Sub

 Event cmdRefresh_Click, merupakan event untuk command button cmdRefresh
Private Sub cmdRefresh_Click()
 'Bagian ini dibutuhkan pada lingkungan multiuser
 On Error GoTo RefreshErr
 datPrimaryRS.Refresh
 Exit Sub
RefreshErr:
 MsgBox Err.Description
End Sub

 Event cmdUpdate_Click, merupakan event untuk command button cmdUpdate
Private Sub cmdUpdate_Click()
 On Error GoTo UpdateErr

 datPrimaryRS.Recordset.UpdateBatch adAffectAll
 Exit Sub
UpdateErr:
 MsgBox Err.Description
End Sub

    Event cmdClose_Click, merupakan event untuk command button cmdClose
     Private Sub cmdClose_Click()
      Unload Me
     End Sub



                                                                            114
   Event Form_Unload, merupakan event untuk Form_Unload
    Private Sub Form_Unload(Cancel As Integer)
     Screen.MousePointer = vbDefault
    End Sub

9.5. Memahami koding ADO melalui Data Form Wizard
       Pada data form wizard memberikan pilihan kepada anda jenis data binding yang akan digunakan, apakah
dengan ADODC atau ADO Code. Pada bagian ini kita akan mempelajari koding ADO.




Selanjutnya langkah wizard adalah sama dengan bagian sebelumnya.




                                                                                                      115
       Sesuatu hal yang harus anda sadari adalah bahwa record navigator yang ada bukan merupakan suatu
ADODC, melainkan dibuat dengan menggunakan Command button dan Label.



9.6. Reference ke Microsoft ActiveX Data Objects 2.0 Library
Sesaat setelah frmCustomer berhasil di generate, maka pada project anda otomatis direference ke Microsoft ActiveX
Data Objects 2.0 Library.




                                                                                                               116
9.7. Bound TextBox pada ADO
Untuk mempelajari cara bound kontrol ke ADO, lakukan klik pada txtFields(0), dan pelajari properti-propertinya :
Property                                        Value
DataSource                                      kosong (tidak diisi)
DataField                                       CustomerId
       Dalam hal ini, properti DataSource tidak disi (binding akan dilakukan secara koding pada event Form_Load),
sedangkan DataField berisi nama field yang akan di bound.


Mempelajari Koding yang dihasilkan
       Pada bagian General Declaration, pada bagian ini dideklarasikan variabel-variabel yang digunakan pada
form, salah satu variabel yang sangat penting adalah adoPrimaryRS yang dideklarasikan sebagai Recordset (dalam
hal ini adalah Recordset dari ADO, karena project kita reference ke Microsoft ActiveX Data Objects 2.0 Library.
       Sesuatu hal yang baru disini adalah deklarasi variabel object adoPrimaryRS diawali dengan WithEvents. Pada
VB 6.0 kita dapat mendeklarasi variabel object beserta dengan eventnya untuk object yang memiliki event (dalam hal
ini ADO memiliki beberapa event yang dapat dikoding). Hal ini tidak ditemui pada VB 5.0 maupun DAO.
Dim WithEvents adoPrimaryRS As Recordset
Attribute adoPrimaryRS.VB_VarHelpID = -1
Dim mbChangedByCode As Boolean
Dim mvBookMark As Variant
Dim mbEditFlag As Boolean
Dim mbAddNewFlag As Boolean
Dim mbDataChanged As Boolean
       Event Form_Load, pada bagian ini akan membuka tabel Customer (dengan SQL) sebagai recordset yang
akan digunakan pada form. Pada ADO, pembukaan recordset harus didahului dengan membuka koneksi ke data
provider dengan object Connection dan Connection String.
Perhatikan Connection String yang digunakan :
"PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=C:\Program Files\Microsoft Visual Studio\VB98\Nwind.mdb;"
       Selanjutnya adalah melakukan bind masing-masing textbox ke data provider adoPrimaryRs dengan looping
For Each, dan menggunakan properti DataSource.
For Each oText In Me.txtFields
  Set oText.DataSource = adoPrimaryRS
Next

Private Sub Form_Load()
 Dim db As Connection                      'Mempersiapkan variabel object Connection
 Set db = New Connection
 db.CursorLocation = adUseClient
 db.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;Data Source=C:\Program Files\Microsoft Visual
Studio\VB98\Nwind.mdb;"

 Set adoPrimaryRS = New Recordset




                                                                                                                  117
 adoPrimaryRS.Open "select
Address,City,CompanyName,ContactName,ContactTitle,Country,CustomerID,Fax,Phone,PostalCode,Region from
Customers", db, adOpenStatic, adLockOptimistic

 Dim oText As TextBox
 'Bind masing-masing textbox ke data provider
 For Each oText In Me.txtFields
   Set oText.DataSource = adoPrimaryRS
 Next

 mbDataChanged = False
End Sub

       Pada Event Form Resize, pada bagian ini dilakukan pengaturan ukuran record navigator yang disesuaikan
dengan ukuran form, dalam hal ini record navigator dibuat dengan command button, dan Label.
Private Sub Form_Resize()
        On Error Resume Next
         lblStatus.Width = Me.Width - 1500
         cmdNext.Left = lblStatus.Width + 700
         cmdLast.Left = cmdNext.Left + 340
End Sub

       Pada Event Form KeyDown, pada bagian ini akan dibangkitkan event-event yang bersesuaian dengan
penekanan tombol oleh pemakai pada form aktif.
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
 If mbEditFlag Or mbAddNewFlag Then Exit Sub

 Select Case KeyCode
  Case vbKeyEscape
   cmdClose_Click
  Case vbKeyEnd
   cmdLast_Click
  Case vbKeyHome
   cmdFirst_Click
  Case vbKeyUp, vbKeyPageUp
   If Shift = vbCtrlMask Then
     cmdFirst_Click
   Else
     cmdPrevious_Click
   End If
  Case vbKeyDown, vbKeyPageDown
   If Shift = vbCtrlMask Then
     cmdLast_Click
   Else
     cmdNext_Click
   End If
 End Select
End Sub

       Pada Event adoPrimaryRS_MoveComplete, event ini akan dibangkitkan setelah perubahan posisi record.
Event ini bekerja pada object adoPrimaryRS yang dideklarasikan dengan WithEvents.
Private Sub adoPrimaryRS_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As
ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)



                                                                                                        118
 'This will display the current record position for this recordset
 lblStatus.Caption = "Record: " & CStr(adoPrimaryRS.AbsolutePosition)
End Sub


Pada Event adoPrimaryRS_WillChangeRecord, event ini akan dibangkitkan sesaat terjadi perubahan isi record.
Private Sub adoPrimaryRS_WillChangeRecord(ByVal adReason As ADODB.EventReasonEnum, ByVal
cRecords As Long, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
 'This is where you put validation code
 'This event gets called when the following actions occur
 Dim bCancel As Boolean

 Select Case adReason
 Case adRsnAddNew
 Case adRsnClose
 Case adRsnDelete
 Case adRsnFirstChange
 Case adRsnMove
 Case adRsnRequery
 Case adRsnResynch
 Case adRsnUndoAddNew
 Case adRsnUndoDelete
 Case adRsnUndoUpdate
 Case adRsnUpdate
 End Select

 If bCancel Then adStatus = adStatusCancel
End Sub

Event cmdAdd_Click, merupakan event untuk command button cmdAdd.
Private Sub cmdAdd_Click()
 On Error GoTo AddErr
 With adoPrimaryRS
  If Not (.BOF And .EOF) Then
    mvBookMark = .Bookmark
  End If
  .AddNew
  lblStatus.Caption = "Add record"
  mbAddNewFlag = True
  SetButtons False
 End With

 Exit Sub
AddErr:
 MsgBox Err.Description
End Sub

Event cmdDelete_Click, merupakan event untuk command button cmdDelete
Private Sub cmdDelete_Click()
 On Error GoTo DeleteErr
 With adoPrimaryRS
  .Delete
  .MoveNext
  If .EOF Then .MoveLast
 End With
 Exit Sub



                                                                                                             119
DeleteErr:
 MsgBox Err.Description
End Sub

Event cmdRefresh_Click, merupakan event untuk command button cmdRefresh
Private Sub cmdRefresh_Click()
 'This is only needed for multi user apps
 On Error GoTo RefreshErr
 adoPrimaryRS.Requery
 Exit Sub
RefreshErr:
 MsgBox Err.Description
End Sub

Event cmdEdit_Click, merupakan event untuk command button cmdEdit
Private Sub cmdEdit_Click()
 On Error GoTo EditErr

 lblStatus.Caption = "Edit record"
 mbEditFlag = True
 SetButtons False
 Exit Sub

EditErr:
 MsgBox Err.Description
End Sub
Private Sub cmdCancel_Click()
 On Error Resume Next

 SetButtons True
 mbEditFlag = False
 mbAddNewFlag = False
 adoPrimaryRS.CancelUpdate
 If mvBookMark > 0 Then
   adoPrimaryRS.Bookmark = mvBookMark
 Else
   adoPrimaryRS.MoveFirst
 End If
 mbDataChanged = False
End Sub

Event cmdUpdate_Click, merupakan event untuk command button cmdUpdate
Private Sub cmdUpdate_Click()
 On Error GoTo UpdateErr

 adoPrimaryRS.UpdateBatch adAffectAll

 If mbAddNewFlag Then
   adoPrimaryRS.MoveLast             'move to the new record
 End If

 mbEditFlag = False
 mbAddNewFlag = False
 SetButtons True
 mbDataChanged = False




                                                                          120
 Exit Sub
UpdateErr:
 MsgBox Err.Description
End Sub

Event cmdClose_Click, merupakan event untuk command button cmdClose
Private Sub cmdClose_Click()
 Unload Me
End Sub

Event cmdFirst_Click, merupakan event untuk command button cmdFirst
Private Sub cmdFirst_Click()
 On Error GoTo GoFirstError

 adoPrimaryRS.MoveFirst
 mbDataChanged = False

 Exit Sub

GoFirstError:
 MsgBox Err.Description
End Sub

Event cmdLast_Click, merupakan event untuk command button cmdLast
Private Sub cmdLast_Click()
 On Error GoTo GoLastError

 adoPrimaryRS.MoveLast
 mbDataChanged = False

 Exit Sub

GoLastError:
 MsgBox Err.Description
End Sub

Event cmdNext_Click, merupakan event untuk command button cmdNext
Private Sub cmdNext_Click()
 On Error GoTo GoNextError

 If Not adoPrimaryRS.EOF Then adoPrimaryRS.MoveNext
 If adoPrimaryRS.EOF And adoPrimaryRS.RecordCount > 0 Then
   Beep
    'moved off the end so go back
   adoPrimaryRS.MoveLast
 End If
 'show the current record
 mbDataChanged = False

 Exit Sub
GoNextError:
 MsgBox Err.Description
End Sub




                                                                      121
Event cmdPrevious_Click, merupakan event untuk command button cmdPrevious
Private Sub cmdPrevious_Click()
 On Error GoTo GoPrevError

 If Not adoPrimaryRS.BOF Then adoPrimaryRS.MovePrevious
 If adoPrimaryRS.BOF And adoPrimaryRS.RecordCount > 0 Then
   Beep
   'moved off the end so go back
   adoPrimaryRS.MoveFirst
 End If
 'show the current record
 mbDataChanged = False

 Exit Sub

GoPrevError:
 MsgBox Err.Description
End Sub

Private Sub SetButtons(bVal As Boolean)
 cmdAdd.Visible = bVal
 cmdEdit.Visible = bVal
 cmdUpdate.Visible = Not bVal
 cmdCancel.Visible = Not bVal
 cmdDelete.Visible = bVal
 cmdClose.Visible = bVal
 cmdRefresh.Visible = bVal
 cmdNext.Enabled = bVal
 cmdFirst.Enabled = bVal
 cmdLast.Enabled = bVal
 cmdPrevious.Enabled = bVal
End Sub

Event Form_Unload, merupakan event yang akan dibangkitkan ketika form di buang dari memori.
Private Sub Form_Unload(Cancel As Integer)
 Screen.MousePointer = vbDefault
End Sub




                                                                                              122

				
DOCUMENT INFO
Shared By:
Categories:
Stats:
views:1329
posted:1/13/2011
language:Indonesian
pages:126
Description: Contoh Form Peminjaman document sample