Skip to main content

Konversi Tipe Data di Access VBA

Dalam situasi tertentu, kita mungkin ingin mengambil data dari sumber lain, entah itu berupa tabel, nilai field, properti, dan sebagainya. Ada kalanya, data dari sumber lain itu mempunyai tipe yang berbeda. Perbedaan tipe data seperti ini sering kita jumpai saat menuliskan kode VBA, apalagi bila kita sering menggunakan pernyataan SQL.


Misalnya, kita ingin mengambil data berupa angka, tetapi tipe sumber datanya berupa text. Jadi, misalnya kita ingin mengambil nilai 1, tetapi berada pada pada "table_1". Dengan demikian, maka kita perlu melakukan konversi tipe data yaitu dari teks untuk mengambil angka satu, setelah itu dikonversi menjadi angka. Access VBA mempunyai banyak fungsi yang digunakan untuk mengkonversi tipe data. Saat kita melalukan konversi, fungsi itu akan menampilkan nilai yang dikonversi, tanpa mengubah nilai aslinya. Ada banyak fungsi konversi  tipe data yang disediakan oleh Access Help, baik itu di Accessnya sendiri atau melalui VBA.

Syntax penulisan untuk fungsi konversi tipe data adalah sebagai berikut:

nama_fungsi(argumen)

di mana nama_fungsi adalah nama fungsi dan argumen dapat berupa variabel, nilai, konstanta, atau ekspresi. Nilai argumen dikonversi ke tipe data lain berdasarkan nama fungsi yang digunakan. Nilai argumen ini tidak berubah, sedangkan hasil konversi yang diproses melalui nama fungsi dapat digunakan sesuai dengan kebutuhan. Nilai argumen tidak selalu dapat dikonversi ke tipe data lainnya, jadi kita harus menggunakan fungsi konversi dengan bijak. Berikut ini adalah beberapa contoh konversi tipe data yang sering digunakan.

Secara umum, fungsi konversi yang ada dalam Access diawali dengan huruf C, walaupun ada juga fungsi konversi yang tidak menggunakan huruf C, seperti fungsi Str dan Val.

Mengkonversi nilai ke tipe data boolean

Tipe data boolean hanya mempunyai dua nilai, True/Benar atau False/Salah. Sebuah nilai dikatakan False/Salah jika nilai itu adalah 0 (nol), selain dari pada itu, maka nilainya adalah True/Benar. Jadi, nilai 1,-1, 2, dan sebagainya dalam tipe data boolean dianggap True/Benar. Semua nilai pada contoh berikut ini adalah True/Benar, karena konversi nilainya tidak sama dengan 0:

CBool("1")
CBool(2+0)
CBool(3)
CBool(-4)

Sebaliknya, semua nilai pada contoh berikut ini adalah False/Salah, karena konversi nilainya sama dengan 0:

CBool(0)
CBool("0")
CBool(5-5)

Untuk menjalankan fungsi konversi CBool, maka semua variabel/argumen yang ada di dalam kurung harus berisi karakter angka. Jika ada satu atau lebih karakter huruf dalam argumen, maka fungsi konversi CBool akan gagal dieksekusi dan menampilkan kesalahan type mismatch.

Fungsi CBool banyak digunakan dalam pernyataan semacam If... Then, misalnya, untuk menentukan dua buah nilai yang cocok satu sama lain (atau tidak ada sisa). Contohnya:

boolStokKosong=CBool(Sum(StokKeluar)-Sum(StokMasuk))
If boolStokKosong Then tampilkanPesanStokKosong

Mengkonversi nilai ke tipe data tanggal

Kita dapat mengkonversi nilai sebuah argumen ke tipe data tanggal dengan menggunakan fungsi CDate. CDate mengkonversi nilai ke tanggal atau waktu yang bisa diterima oleh Access VBA. Nilai itu bisa berupa angka atau teks yang dituliskan dalam format tanggal. Fungsi CDate membaca format tanggal/waktu sesuai dengan pengaturan Regional Setting menurut Windows, yaitu:

Bila argumen dalam fungsi CDate berisi angka numerik, fungsi ini akan mengkonversi bagian bulat dari sebuah angka ke jumlah hari yang ditetapkan sejak tanggal 30 Desember 1899. Bila dalam angka numerik itu mempunyai bagian desimal, maka angka desimal itu akan dikonversi ke jam/waktu, yaitu dengan mengalikan desimal dengan 24. Berikut ini contohnya:

CDate(1)=12/31/1899 (31 Desember 1899)
CDate(42512)=5/22/2016 (22 Mei 2016)
CDate(42512.25)=5/22/2016 6:00:00 AM (22 Mei 2016, jam 6 pagi)

Bila argumen berisi teks yang bisa dibaca sebagai tanggal, maka CDate mengkonversi teks ini jika memang bisa dibaca sebagai tanggal. Nilai argumen yang berisi teks itu harus diletakkan di antara tanda kutip dua. Contohnya:

CDate("May 22, 2016")=5/22/2016 (22 Mei 2016)
CDate("May 22, 2016 6:00:00 AM")=5/22/2016 (22 Mei 2016, jam 6 pagi)
CDate("5:23:00 AM")=5:23:00 AM (jam 5:23 pagi)
CDate("42512")=5/22/2016 (22 Mei 2016)
CDate("2016-05-22")=5/22/2016 (22 Mei 2016)
CDate("22-5-2016")=5/22/2016 (22 Mei 2016)
CDate("22/5/2016")=5/22/2016 (22 Mei 2016)

Bila nilai argumen tidak dikenali, maka VBA akan menampilakn pesan kesalah Type Mismatch, contohnya:
CDate("20160522") akan menampilkan pesan kesalah Type Mismatch.

Hal yang harus diperhatikan dalam mengkonversi teks ke tanggal adalah penulisan tahun harus menggunakan format 4 digit. Bila hanya 2 digit, maka VBA mungkin akan mengintepretasikan argumen secara berbeda. Contoh:

CDate("22-5-16")=5/16/2022 (16 Mei 2022)
CDate("16-5-22")=5/22/2016  (22 Mei 2016)

CDate("22-5-816")=5/22/816 (22 Mei 816)
CDate("822-5-16")=5/16/822 (16 Mei 822)

Tanggal yang bisa dikenali oleh Access terletak antara 1 Januari 100 dan 31 Desember 9999. Di luar tanggal itu fungsi CDate akan menampilkan kesalahan Type Mismatch.

Mengkonversi ke tipe data string (teks)

Kita dapat mengkonversi sebuah angka ke tipe data string dengan menggunakan fungsi CStr. Nilai argumen dapat berupa variabel, konstanta, ekspresi, atau nilai literal yang kemudian diubah ke string.Jika argumen berupa variabel, maka variabel itu harus diberi nilai terlebih dahulu. Bila tidak diberi nilai, maka variable itu dianggap 0 dan dikonversi ke nilai 0.

Mengkonversi ke tipe data variant

Tipe data variant mungkin merupakan tipe yang paling fleksibel karena dapat menerima nilai dengan tipe yang bermacam-macam. Kita dapat mengkonversi sebuah argumen ke tipe data variant dengan menggunakan fungsi CVar.Dengan CVar, argumen yang berupa angka numerik maupun teks string dapat dikonversi ke tipe data variant. CVar biasanya digunakan hanya jika kita tidak tahu pasti tipe data apa yang akan dikonversi. CVar banyak digunakan untuk mengubah data yang bertipe string/teks. Misalanya:
Tabel Preferensi Sistem
Nama Preferensi Nilai Preferensi
displayUserName -1
incomeSummary 999
journalAdjust AJ
journalClosing ZZZ
subAccountCode1 000
subAccountCode2 000
voucherPrimaryAccountCash KAS,KSD,BD1
vouchNumberSeparator /

Tabel Preferensi Sistem di atas terdiri dari dua kolom, yaitu Nama Preferensi dan Nilai Preferensi. Kolom Nilai Preferensi mempunyai bermacam-macam nilia, seperti -1, 999, AJ, dsb. Tipe dari Nilai Preferensi itu bermacam-macam: boolean untuk -1, string untuk AJ dan ZZZ, dan array untuk KAS,KSD,BD. Nah, di sinilah CVar berfungsi. CVar akan amengambil nilai, misalnya nama preferensi displayUserName mempunyai nilai preferensi -1.

Mengkonversi nilai Null


Penggunaan nilai Null dalam berbagai macam ekspresi mungkin bisa menimbulkan kesalahan. Biasanya, pesan kesalahan yang muncul adalah Invalid Use of Null. Contoh berikut ini akan menimbulkan pesan kesalahan bila salah satu nilai dari variabel mempunyai nilai Null:

varTotal = ValueA * ValueB

Bila kesalahan muncul, kita dapat menggunakan fungsi Nz untuk mengkonversi nilai ke non-Null. Syntax penulisannya adalah sebagai berikut:

Nz(nilai, [nilai_lain_jika_Null])

artinya: jika nilai sama dengan Null, maka nilai dari nilai_lain_jika_Null yang akan digunakan.

Bila diaplikasikan pada perhitingan nilai varTotal seperti contoh di atas, maka persamaannya menjadi:
varTotal = Nz(ValueA,0) * Nz(ValueB,0)

Mengkonversi ke tipe data integer

Kita dapat mengkonversi sebuah angka numerik atau teks berupa angka menjadi integer dengan menggunakan fungis CInt. Nilai argumen yang bisa dikonversi terletak di range antara 32,678 dan 32,767. Di luar range ini, maka CInt akan memberikan pesan kesalahan overflow. Jika nilai yang ingin dikonversi itu mempunyai angka desimal (angka pecahan), maka hasil konversi berupa pembulatan. Pecahan argumen yang bernilai lebih besar atau sama dengan 0.5 dibulatkan ke atas, sedangkan bila di bawah 0.5 dibulatkan ke bawah. Contoh:


CInt(20.5) = 21
CInt(25.333) = 25
CInt(10/3) = 3
CInt("1,000") = 1000

Comments

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Format Untuk Field Dengan Tipe Data Number dan Currency di MS Access

Mengenal Jenis dan Kegunaan Layout Pada Form di Access