Mengakses tabel via kelas
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 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 :
1. Buat project baru 2. Tambahkan Class Module dan disini kita hanya akan membahas membuat kelas private (bukan sebagai project terpisah) hanya untuk menyederhanakan pembahasan
kemudian ganti namanya menjadi clsSiswa
3. Membuat Properties
Salah satu kegunaan properties adalah untuk melewatkan data dari objek luar kelas, contoh untuk membuat properties nomorinduk :
Private mNomorInduk As String 'm untuk prefix Member
'untuk mengeset nilai properties
'jika kode ini tidak kita buat maka sifat dari propertiesnya adalah readonly
Public Property Let nomorInduk(ByVal vData As String)
mNomorInduk = vData
End Property
'untuk membaca nilai properties
Public Property Get nomorInduk() As String
nomorInduk = mNomorInduk
End Property
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 :
Option Explicit
Private mRs As ADODB.Recordset
Private mNomorInduk As String 'm untuk prefix Member
Private mNama As String
Private mAlamat As String
'untuk mengeset nilai properties
'jika kode ini tidak kita buat maka sifat dari propertiesnya adalah readonly
Public Property Let nomorInduk(ByVal vData As String)
mNomorInduk = vData
End Property
'untuk membaca nilai properties
Public Property Get nomorInduk() As String
nomorInduk = mNomorInduk
End Property
Public Property Let nama(ByVal vData As String)
mNama = vData
End Property
Public Property Get nama() As String
nama = mNama
End Property
Public Property Let alamat(ByVal vData As String)
mAlamat = vData
End Property
Public Property Get alamat() As String
alamat = mAlamat
End Property
4. 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 :
Public Function addData() As Boolean
On Error GoTo errHandle
strSql = "INSERT INTO siswa (nomorinduk, nama, alamat) VALUES ('" & _
rep(nomorInduk) & "', '" & rep(nama) & "', '" & rep(alamat) & "')"
conn.Execute strSql
addData = True
Exit Function
errHandle:
addData = False
End Function
Selanjutnya buat juga untuk method-method lainnya :
Public Function editData() As Boolean
On Error GoTo errHandle
strSql = "UPDATE siswa SET nama = '" & rep(nama) & "', alamat = '" & rep(alamat) & "' " & _
"WHERE nomorinduk = '" & rep(nomorInduk) & "'"
conn.Execute strSql
editData = True
Exit Function
errHandle:
editData = False
End Function
Public Function delData() As Boolean
On Error GoTo errHandle
strSql = "DELETE FROM siswa WHERE nomorinduk = '" & rep(nomorInduk) & "'"
conn.Execute strSql
delData = True
Exit Function
errHandle:
delData = False
End Function
Karena method startGetData dan getData adalah satu paket maka kita akan menggunakan pendekatan yang sedikit berbeda :
Public Function startGetData() As Long
On Error GoTo errHandle
strSql = "SELECT nomorinduk, nama, alamat " & _
"FROM siswa " & _
"ORDER BY nama"
Set mRs = openRecordset(strSql)
If Not mRs.EOF Then startGetData = getRecordCount(mRs)
Exit Function
errHandle:
startGetData = 0
End Function
Public Sub getData()
On Error Resume Next
mNomorInduk = 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.MoveNext
End Sub
'setelah pemanggilan method startGetData
'hasil recordset sebaiknya dihapus dari memory
Public Sub endGetData()
Call closeRecordset(mRs)
End Sub
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 :
Private Sub cmdTesBuatObjek_Click()
'deklarsi var objSiswa, sampai disini masih belum bisa digunakan
Dim objSiswa As clsSiswa
'membuat objek clsSiswa dg nama objSiswa
Set objSiswa = New clsSiswa
'dan jangan lupa dihapus setelah selesai digunakan
Set objSiswa = Nothing
End Sub
Selanjutnya kita baru bisa menggunakan properties dan method yang ada di kelas siswa :
Private Sub cmdSimpan_Click()
Set objSiswa = New clsSiswa
With objSiswa
.nomorInduk = "02024113"
.nama = "KoKom Armagedon"
.alamat = ""
result = .addData
End With
Set objSiswa = Nothing
If result Then
MsgBox "Data sudah disimpan", vbInformation, "Informasi"
Else
MsgBox "Data siswa gagal disimpan", vbExclamation, "Peringatan"
End If
End Sub
Private Sub cmdEdit_Click()
Set objSiswa = New clsSiswa
With objSiswa
.nomorInduk = "02024113"
.nama = "K4m4r82"
.alamat = "Yogyakarta"
result = .editData
End With
Set objSiswa = Nothing
If result Then
MsgBox "Perubahan data sudah disimpan", vbInformation, "Informasi"
Else
MsgBox "Data siswa gagal disimpan", vbExclamation, "Peringatan"
End If
End Sub
Private Sub cmdDelete_Click()
Set objSiswa = New clsSiswa
With objSiswa
.nomorInduk = "02024113"
result = .delData
End With
Set objSiswa = Nothing
If result Then
MsgBox "Data siswa sudah dihapus", vbInformation, "Informasi"
Else
MsgBox "Data siswa gagal dihapus", vbExclamation, "Peringatan"
End If
End Sub
Private Sub cmdTampilkanData_Click()
Dim i As Long
Set objSiswa = New clsSiswa
With objSiswa
Screen.MousePointer = vbHourglass
DoEvents
'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 cepat
For i = 1 To .startGetData
Call .getData
Debug.Print "Nomor Induk : " & .nomorInduk
Debug.Print "Nama : " & .nama
Debug.Print "Alamat : " & .alamat
Next i
Call .endGetData
Screen.MousePointer = vbDefault
End With
Set objSiswa = Nothing
End Sub
Contoh outpu program :
Untuk source codenya bisa didownload disini.
Selamat mencoba
Comments