Seringkali, sebuah kode program menjalankan beberapa tugas yang berbeda berdasarkan beberapa nilai. Jika kondisi bernilai benar, maka kode itu menjalankan satu tugas. Jika kondisi bernilai salah, maka kode program itu menjalankan tugas yang berbeda. Kemampuan sebuah aplikasi untuk memperoleh nilai, dan berdasarkan nilai itu, memutuskan kode manakah yang akan dijalankan disebut dengan proses pencabangan atau pemrosesan secara kondisional.
Gambaran sederhananya seperti ini. Saat berjalan keluar dari rumah, mungkin kita belum memutuskan hendak pergi ke mana. Di tengah perjalanan, kita berhenti di sebuah bertigaan, belok ke kiri berarti ke taman, sedangkan belok ke kanan berarti ke kolam renang. Bila ingin ke kolam renang, berati kita belok ke kanan, sedangkan bila ingin ke taman, berarti kita belok ke kiri. Dengan cara seperti ini, sebuah program melihat nilai dari beberapa variabel dan memutuskan kode manakah yang akan diproses.
VBA pada Access mempunyai dua pernyataan yang digunakan utuk memproses secara kondisional:
■ If...Then...Else...End If
■ Select Case...End Select
Sebuah pernyataan If dapat dituliskan dengan beberapa bentuk:
Bentuk penulisan If...Then hanya terdiri dari satu baris pernyataan saja di mana kondisi dan tugas atau aksi yang bernilai benar berada dalam baris yang sama. Contohnya seperti ini:
Dengan penulisan If...Then...End If seperti ini, kita bisa menjalankan dua atau lebih baris perintah, saat sebuah pernyataan kondisional If bernilai benar. Misalnya seperti ini:
Jika kondisi pertama dan kondisi kedua tidak benar, maka pernyataan setelah Else dieksekusi. Jika kondisi pertama dan kondisi kedua tidak benar dan Else tidak digunakan, maka tidak ada pernyataan yang benar dan langsung diakhiri dengan pernyatan End If.
Bila intTipeField=3, dinyatakan dengan Case 3, maka TipeField="Integer"
Bila intTipeField=4, dinyatakan dengan Case 4, maka TipeField="Long Integer"
dst
Bila tidak ada nilai intTipeField yang sesuai dengan setiap nilai Case, maka kita menggunakan Case Else, dalam contoh di atas, TipeField = "Belum didefinisikan".
Pernyataan Case Else bersifat opsional dan selalu ditaruh di bagian akhir dari Case. Bila tidak ada Case Else, maka program akan berlanjut ke End Select.
Gambaran sederhananya seperti ini. Saat berjalan keluar dari rumah, mungkin kita belum memutuskan hendak pergi ke mana. Di tengah perjalanan, kita berhenti di sebuah bertigaan, belok ke kiri berarti ke taman, sedangkan belok ke kanan berarti ke kolam renang. Bila ingin ke kolam renang, berati kita belok ke kanan, sedangkan bila ingin ke taman, berarti kita belok ke kiri. Dengan cara seperti ini, sebuah program melihat nilai dari beberapa variabel dan memutuskan kode manakah yang akan diproses.
VBA pada Access mempunyai dua pernyataan yang digunakan utuk memproses secara kondisional:
■ If...Then...Else...End If
■ Select Case...End Select
Keyword If
Dalam sebuah program, keyword If dapat digunakan dalam beberapa cara yang berbeda. Semua cara itu digunakan untuk memeriksa sebuah kondisi, dan, berdasarkan hasil evaluasi, program menjalankan sebuah tugas. Pemeriksaan kondisi akan menghasilkan nilai dengan tipe data Boolean, yaitu benar atau salah. Bila kondisi bernilai benar, maka program akan menjalankan baris perintah setelah pernyataan If. Bila kondisi bernilai salah, maka program akan meloncat ke pernyataan setelah Else, jika ada, atau End If jika tidak ada pernyataan Else.Sebuah pernyataan If dapat dituliskan dengan beberapa bentuk:
Bentuk Penulisan If...Then
Bentuk penulisan If...Then hanya terdiri dari satu baris pernyataan saja di mana kondisi dan tugas atau aksi yang bernilai benar berada dalam baris yang sama. Contohnya seperti ini:
If intTerbilang=1 Then strTerbilang="Satu" If strPropinsi="Jawa Tengah" Then strIbuKota="Semarang"Pada pernyataan di atas, VBA mengevaluasi strPropinsi="Jawa Tengah" terlebih dahulu dan memastikan bila hasil evaluasi ini benar atau salah. Bila benar (artinya strPrpopinsi bernilai Jawa Tengah) maka pernyataan setelah Then dieksekusi. Pada contoh di atas, variabel strIbuKota diberi nilai Semarang. Bila hasil evaluasi bernilai salah, maka program akan menjalankan perintah di baris berikutnya.
Bentuk Penulisan If...Then...Else
Bentuk penulisan If...Then...Else... hanya terdiri dari satu baris pernyataan saja di mana kondisi dan tugas atau aksi yang benar maupun yang salah berada dalam baris yang sama.If strPropinsi="Jawa Tengah" Then strIbuKota="Semarang" Else strIbuKota="Bukan Semarang"Pada contoh ini, bila hasil evaluasi strPropinsi bernilai benar ("Jawa Tengah") maka pernyataan setelah Then dieksekusi, yaitu variabel strIbuKota bernilai "Semarang". Bila hasil evaluasi strPropinsi bernilai lain (bukan "Jawa Tengah") maka pernyataan setelah Else dieksekusi, yaitu variabel strIbuKota bernilai "Bukan Semarang".
Bentuk Penulisan If...End If
Bentuk penulisan If...End If berisi satu atau lebih baris perintah di dalam blok yang dimulai dengan If dan diakhiri dengan End If. Contoh di atas bisa juga dituliskan dengan menggunakan blok seperti berikut ini:If strPropinsi="Jawa Tengah" Then strIbuKota="Semarang" End IfCara mengartikannya sama persis dengan contoh If...Then di atas. Jika pernyataan kondisional If bernilai benar, maka satu pernyataan tunggal dalam blok If...Then...End If dieksekusi. Jika salah, maka program akan langsung mengakhiri ke End If dan melanjutkan program yang ada di bawahnya.
Dengan penulisan If...Then...End If seperti ini, kita bisa menjalankan dua atau lebih baris perintah, saat sebuah pernyataan kondisional If bernilai benar. Misalnya seperti ini:
If strPropinsi="Jawa Tengah" Then strIbuKota="Semarang" strNamaPelabuhan="Tanjung Emas" End IfArtinya: Jika strPrpopinsi bernilai Jawa Tengah, maka pernyataan setelah Then dan berada di dalam blok If...End If dieksekusi. Jadi ada dua baris pernyataan di dalam blok If...Then...End If, yaitu strIbuKota="Semarang" dan strNamaPelabuhan="Tanjung Emas" yang dieksekusi.
Bentuk Penulisan If...Then...Else...End If
Pada contoh sebelumnya, satu atau lebih pernyataan dieksekusi bila jika pernyataan kondisional If bernilai benar dan tidak ada eksekusi lain saat pernyataan kondisi If bernilai salah. Untuk bentuk penulisan If...Then...Else...End If, keyword Else digunakan bila pernyataan kondisional If bernilai salah.If strPropinsi="Jawa Tengah" Then strIbuKota="Semarang" strNamaPelabuhan="Tanjung Emas" Else strIbuKota="Bukan Semarang" strNamaPelabuhan="Bukan Tanjung Emas" End IfBila pernyataan kondisional strPropinsi bernilai "Jawa Tengah" (benar), maka program akan menjalankan pernyataan strIbuKota="Semarang" dan strPelabuhan="Tanjung Emas". Bila strPropinsi bernilai lain (bukan "Jawa Tengah" ), maka program akan menjalankan pernyataan setelah Else yaitu strIbuKota="Bukan Semarang" dan strPelabuhan="Bukan Tanjung Emas".
Bentuk penulisan If...Then...ElseIf...Then...End If
Jika menginginkan ada banyak kondisi If, kita dapat mengganti pernyataan Else dengan ElseIf. Pernyataan ElseIf pada If...Then...ElseIf...Then...End If digunakan untuk menyatakan segala kondisi yang mungkin diperlukan.If strPropinsi="Jawa Tengah" Then strIbuKota="Semarang" strNamaPelabuhan="Tanjung Emas" ElseIf strPropinsi="Jawa Timur" Then strIbuKota="Surabaya" strNamaPelabuhan="Tanjung Perak" Else strIbuKota="Ibu Kota Lainnya" strNamaPelabuhan="Pelabuhan Lainnya" End IfArtinya: Jika kondisi pertama - yaitu strPropinsi bernilai "Jawa Tengah" - bernilai benar, maka pernyataan yang memenuhi syarat kondisi pertama akan dijalankan. Bila kondisi pertama tidak benar, maka kondisi kedua dievaluasi. Jika kondisi kedua - yaitu strPropinsi bernilai "Jawa Timur" - bernilai benar, maka pernyataan yang memenuhi syarat kondisi kedua akan dijalankan.
Jika kondisi pertama dan kondisi kedua tidak benar, maka pernyataan setelah Else dieksekusi. Jika kondisi pertama dan kondisi kedua tidak benar dan Else tidak digunakan, maka tidak ada pernyataan yang benar dan langsung diakhiri dengan pernyatan End If.
Bentuk If berkalang (Nested If)
If berkalang atau dalam bahasa Inggrisnya nested If adalah pernyataan If dalam If. Jadi dalam pernyataan If...Then...End If terdapat pernyataan If...Then yang lainnya. Berikut ini adalah contohnya.If strPulau="Jawa" Then If strPropinsi="Jawa Tengah" Then strIbuKota="Semarang" strNamaPelabuhan="Tanjung Emas" ElseIf strPropinsi="Jawa Timur" Then strIbuKota="Surabaya" strNamaPelabuhan="Tanjung Perak" Else strIbuKota="Ibu Kota Lainnya" strNamaPelabuhan="Pelabuhan Lainnya" End If End IfPernyataan If di posisi paling luar adalah If strPulau="Jawa" Then. Setelah itu diikuti oleh pernyataan If...Then...ElseIf...End If yang berada di dalamnya. Bila evaluasi kondisi strPulau="Jawa" bernilai benar, maka If...Then...ElseIf...End If dieksekusi. Untuk memudahkan pemrogram membaca pernyataan If...Then, pemakaian indentasi diperlukan. Indentasi digunakan untuk menuliskan pernyataan agak menjorok ke dalam, sehingga posisi tepat kapan If dimulai dan End If yang terkait diakhiri menjadi mudah dipahami.
Nilai dan Kondisi If pada tipe data Boolean
Ada situasi di mana pernyataan If...Then tidak tepat dalam penerapannya. Hal ini terjadi bila variabel yang ingin diuji mempunyai tipe data Boolean. Misalnya, untuk memeriksa apakah seorang karyawan masih bekerja atau sudah keluar, seperti ini:If blMasihKerja = True Then blStatusLogin = True Else blStatusLogin = False End IfTidak ada yang salah dalam penggunaan pernyataan If blMasihKerja = True Then di atas, hanya kurang tepat. Pernyataan If digunakan bila satu kondisi dinyatakan benar atau salah. Nah, dalam hal blMasihKerja = True, blMasihKerja itu sendiri merupakan kondisi yang sudah bernilai benar (True). Dengan demikian kondisi blMasihKerja=True tidak perlu dituliskan. Kita dapat menyederhanakan kode di atas menjadi:
If blMasihKerja Then blStatusLogin = True Else blStatusLogin = False End If
Penggunaan keyword Not pada If...Then
Kita bisa menggunakan keyword Not pada pernyataan If...Then bila kondisi memang tidak sesuai dengan yang diinginkan. Misalnya, jika karyawan sudah tidak bekerja lagi, maka status login bernilai salah (False). Dengan demikian pernyataan If...Then di atas dapat disusun seperti ini:If Not blMasihKerja Then blStatusLogin = False Else blStatusLogin = True End IfNot blMasihKerja juga bisa diartikan: Benar bahwa si karyawan sudah tidak bekerja lagi, sehingga status loginnya (blStatusLogin) bernilai salah.
Menggunakan banyak kondisi dengn SELECT CASE
Bila ada banyak kondisi yang ingin diuji, penggunaan If...Then menjadi tidak efektif dan terlihat membingunkan. Untuk itu, VBA juga menyediakan pernyataan Select Case...End Select yang dapat menggantikan If...Then. Sintaks penulisan Select Case...End Select adalah sebagai berikut:Select Case Ekspresi Case Nilai1 Baris yang harus dijalankan bila Ekspresi = Nilai1 Case Nilai2 Baris yang harus dijalankan bila Ekspresi = Nilai2 Case dst dst Case Else Baris yang harus dijalankan bila Ekspresi tidak mempunyai nilai yang sesuai dengan nilai-nilai di atas. Baris ini bisa juga dianggap sebagai nilai default. End SelectPada dasarnya, pengertian Select Case sama dengan If...Then. Namun demikian, Select Case lebih cocok digunakan bila ada banyak kondisi yang ingin diuji. Pada Select Case, kondisi yang ingin diuji dinyatakan dengan sebuah Ekspresi. Kemudian, dengan menggunakan Case, kita menguji nilai Ekspresi yang mungkin terjadi. Bila ada nilai yang sesuai pada Case, program menjalankan kode yang ada pada Case ini. Contohnya pada kode VBA berikut ini:
Select Case intTipeField 'Numeric Case 3: TipeField = "Integer" Case 4: TipeField ="Long Integer" 'Text Case 10: TipeField = "Text" 'Date and Time Case 8 TipeField = "Date" Case 22 TipeField = "Time" 'Boolean Case 1: TipeField = "Yes/No" 'Others Case Else: TipeField = "Belum didefinisikan" End SelectPada contoh diatas, kita ingin menguji tipe field yang dinyatakan dengan Ekspresi intTipeField.
Bila intTipeField=3, dinyatakan dengan Case 3, maka TipeField="Integer"
Bila intTipeField=4, dinyatakan dengan Case 4, maka TipeField="Long Integer"
dst
Bila tidak ada nilai intTipeField yang sesuai dengan setiap nilai Case, maka kita menggunakan Case Else, dalam contoh di atas, TipeField = "Belum didefinisikan".
Pernyataan Case Else bersifat opsional dan selalu ditaruh di bagian akhir dari Case. Bila tidak ada Case Else, maka program akan berlanjut ke End Select.
Penggunaan Is pada Case
Is pada Case digunakan bila Ekspressi tidak sama, misalnya bila Ekspressi lebih besar atau lebih kecil dari nilai Case. Contohnya seperti ini:Select Case dbTaxRate Case Is < 0.05 MsgBox "Tarif Pajak Max 5%" Case Is < 0.1 MsgBox "Tarif Pajak 5% dan 10%" Case Is > 0.2 MsgBox "Tarif Pajak lebih dari 20%" Case Else MsgBox "Tarif lainnya" End SelectPada contoh di atas, Ekspresi dbTaxRate diuji. Bila nilai dbTaxRate kurang dari 5% (0.05), maka pesan Tarif Pajak Max 5% ditampilkan, bila tidak ada yang sesuai dengan nilai Case Is, maka pesan "Tarif lainnya" ditampilkan.
Menggunakan Banyak Nilai pada Case
Nilai pada Case bisa kita nyatakan dengan beberapa cara:Case Is <= 99 dbKomisi = 1 Case 100 To 115, 116 To 199 dbKomisi = 3 Case 200 To 499 dbKomisi = 15 Case Is >= 500 dbKomisi = 18Pada contoh di atas, ada banyak variasi penggunaan nilai Case, yaitu bila nilai Case lebih kecil atau sama dengan 99, nilai Case terletak di antara 100 s/d 115, 116 s/d 199, dan seterusnya. Intinya, bila ada banyak sekali kondisi yang ingin diuji, penggunaan SELECT CASE jauh lebih efektif dari pada penggunaan If...Then.
Comments
Post a Comment