Artikel kita kali ini khusus bagi Anda yang sudah terbiasa membuat aplikasi database menggunakan Visual Basic 6 tetapi untuk mengeksekusi perintah-perintah DML (Insert, Update, Delete dan Select) masih di lakukan di Form/Modul.
Dan diartikel ini juga kita akan sedikit mencoba memasuki daerah suram bagi kebanyakan programmer prosedural seperti Saya dan Anda :D yang biasa disebut OOP.
Kenapa menggunakan kelas dan teori-teori seputar kelas bisa anda baca referensi-referensi yang berhubungan dengan OOP di Visual Basic 6, walaupun Visual Basic 6 sendiri belum bisa dikatakan bahasa pemrograman yang full OOP. Setidaknya itu yang saya baca dari referensi-referensi yang ada, kalo salah mohon dikoreksi :).
Oke kita langsung saja mempersiapkan dan mempraktikkan langkah-langkah apa saja yang perlu dilakukan untuk membuat kelas.
Ingat >> Practice, practice, practice! Practice makes perfect :) <<
Untuk contoh kita akan membuat kelas siswa dari rancangan tabel berikut :
Buat project baru
Tambahkan Class Module dan disini kita hanya akan membahas membuat kelas private (bukan sebagai project terpisah) hanya untuk menyederhanakan pembahasan
Salah satu kegunaan properties adalah untuk melewatkan data dari objek luar kelas, contoh untuk membuat properties nomorinduk :
123456789101112
PrivatemNomorIndukAsString'm untuk prefix Member'untuk mengeset nilai properties'jika kode ini tidak kita buat maka sifat dari propertiesnya adalah readonlyPublicPropertyLetnomorInduk(ByValvDataAsString)mNomorInduk=vDataEndProperty'untuk membaca nilai propertiesPublicPropertyGetnomorInduk()AsStringnomorInduk=mNomorIndukEndProperty
Ulangi langkah-langkah no. 3 untuk membuat properties yang lain: nama, alamat dan nilai. Selain itu kita juga akan menambahkan private variabel dengan tipe recordset kita sebut saja namanya mRs, sesuai tipenya variabel ini digunakan untuk menampung hasil SELECT.
Hasil akhir source code untuk membuat propertiesnya adalah sebagai berikut :
OptionExplicitPrivatemRsAsADODB.RecordsetPrivatemNomorIndukAsString'm untuk prefix MemberPrivatemNamaAsStringPrivatemAlamatAsString'untuk mengeset nilai properties'jika kode ini tidak kita buat maka sifat dari propertiesnya adalah readonlyPublicPropertyLetnomorInduk(ByValvDataAsString)mNomorInduk=vDataEndProperty'untuk membaca nilai propertiesPublicPropertyGetnomorInduk()AsStringnomorInduk=mNomorIndukEndPropertyPublicPropertyLetnama(ByValvDataAsString)mNama=vDataEndPropertyPublicPropertyGetnama()AsStringnama=mNamaEndPropertyPublicPropertyLetalamat(ByValvDataAsString)mAlamat=vDataEndPropertyPublicPropertyGetalamat()AsStringalamat=mAlamatEndProperty
Menambahkan method
Method dalam istilah pemrograman terstruktur biasanya dikenal dengan istilah fungsi/prosedur, disini kita akan membuat method-method yang mewakili perintah DML SQL :
Insert -> addData : Boolean
Update -> editData : Boolean
Delete -> deleteData : Boolean
Select -> startGetData : Long + getData
Contoh kita akan menambahkan method addData :
12345678910111213
PublicFunctionaddData()AsBooleanOnErrorGoToerrHandlestrSql="INSERT INTO siswa (nomorinduk, nama, alamat) VALUES ('"&_rep(nomorInduk)&"', '"&rep(nama)&"', '"&rep(alamat)&"')"conn.ExecutestrSqladdData=TrueExitFunctionerrHandle:addData=FalseEndFunction
Selanjutnya buat juga untuk method-method lainnya :
1234567891011121314151617181920212223242526
PublicFunctioneditData()AsBooleanOnErrorGoToerrHandlestrSql="UPDATE siswa SET nama = '"&rep(nama)&"', alamat = '"&rep(alamat)&"' "&_"WHERE nomorinduk = '"&rep(nomorInduk)&"'"conn.ExecutestrSqleditData=TrueExitFunctionerrHandle:editData=FalseEndFunctionPublicFunctiondelData()AsBooleanOnErrorGoToerrHandlestrSql="DELETE FROM siswa WHERE nomorinduk = '"&rep(nomorInduk)&"'"conn.ExecutestrSqldelData=TrueExitFunctionerrHandle:delData=FalseEndFunction
Karena method startGetData dan getData adalah satu paket maka kita akan menggunakan pendekatan yang sedikit berbeda :
PublicFunctionstartGetData()AsLongOnErrorGoToerrHandlestrSql="SELECT nomorinduk, nama, alamat "&_"FROM siswa "&_"ORDER BY nama"SetmRs=openRecordset(strSql)IfNotmRs.EOFThenstartGetData=getRecordCount(mRs)ExitFunctionerrHandle:startGetData=0EndFunctionPublicSubgetData()OnErrorResumeNextmNomorInduk=IIf(IsNull(mRs("nomorinduk").Value),"",mRs("nomorinduk").Value)mNama=IIf(IsNull(mRs("nama").Value),"",mRs("nama").Value)mAlamat=IIf(IsNull(mRs("alamat").Value),"",mRs("alamat").Value)mNilai=IIf(IsNull(mRs("nilai").Value),0,mRs("nilai").Value)mRs.MoveNextEndSub'setelah pemanggilan method startGetData'hasil recordset sebaiknya dihapus dari memoryPublicSubendGetData()CallcloseRecordset(mRs)EndSub
Sampai disini persiapan membuat kelas sudah selesai dan langkah selanjutnya kita akan mencoba menggunakan kelas siswa berikut properties dan methodnya.
Ingat kelas siswa tidak bisa langsung digunakan jadi kita harus mendeklarsikan sebuah var objek dengan tipe clsSiswa, contoh :
12345678910
PrivateSubcmdTesBuatObjek_Click()'deklarsi var objSiswa, sampai disini masih belum bisa digunakanDimobjSiswaAsclsSiswa'membuat objek clsSiswa dg nama objSiswaSetobjSiswa=NewclsSiswa'dan jangan lupa dihapus setelah selesai digunakanSetobjSiswa=NothingEndSub
Selanjutnya kita baru bisa menggunakan properties dan method yang ada di kelas siswa :
PrivateSubcmdSimpan_Click()SetobjSiswa=NewclsSiswaWithobjSiswa.nomorInduk="02024113".nama="KoKom Armagedon".alamat=""result=.addDataEndWithSetobjSiswa=NothingIfresultThenMsgBox"Data sudah disimpan",vbInformation,"Informasi"ElseMsgBox"Data siswa gagal disimpan",vbExclamation,"Peringatan"EndIfEndSubPrivateSubcmdEdit_Click()SetobjSiswa=NewclsSiswaWithobjSiswa.nomorInduk="02024113".nama="K4m4r82".alamat="Yogyakarta"result=.editDataEndWithSetobjSiswa=NothingIfresultThenMsgBox"Perubahan data sudah disimpan",vbInformation,"Informasi"ElseMsgBox"Data siswa gagal disimpan",vbExclamation,"Peringatan"EndIfEndSubPrivateSubcmdDelete_Click()SetobjSiswa=NewclsSiswaWithobjSiswa.nomorInduk="02024113"result=.delDataEndWithSetobjSiswa=NothingIfresultThenMsgBox"Data siswa sudah dihapus",vbInformation,"Informasi"ElseMsgBox"Data siswa gagal dihapus",vbExclamation,"Peringatan"EndIfEndSubPrivateSubcmdTampilkanData_Click()DimiAsLongSetobjSiswa=NewclsSiswaWithobjSiswaScreen.MousePointer=vbHourglassDoEvents'saya disini menggunakan perulangan for untuk menampilkan data'biasanya kita untuk menampilkan data dari recordset menggunakan'perulangan : do while not varRs.EOF atau semisalnya'hasil survey membuktikan menggunakan for lebih cepatFori=1To.startGetDataCall.getDataDebug.Print"Nomor Induk : "&.nomorIndukDebug.Print"Nama : "&.namaDebug.Print"Alamat : "&.alamatNextiCall.endGetDataScreen.MousePointer=vbDefaultEndWithSetobjSiswa=NothingEndSub