Mengenal OOP di Visual Basic 6 , Contoh Kasus CRUD Create Read Update Delete Data Pasien
Object Oriented Programming
Pemrograman Berorientasi Object atau lebih sering disebut OOP adalah paradigma pemrograman yang berorientasi pada object. Semua data dan fungsi dibungkus dalam sebuah object. Setiap object dapat menerima pesan, memproses atau mengirim ke object lainnya. Selain itu setiap object juga bisa diturunkan, berubah menjadi object baru atau berubah memiliki sifat yang lain. Pendekatan OOP mirip dengan pendekatan kita dalam melihat object benda hidup, dimana sebuah object memiliki data/property dan mampu melakukan suatu hal (Fungsi/method). misalnya object kucing. Object kucing memiliki(Property):
kaki =empat
kumis = tipis
perawakan = tegap
kucing bisa melakukan aksi(Fungsi/Method):
Mengeong
Berlari dengan empat kaki
Melompat.
Visual Basic 6
Visual Basic 6 adalah salah satu bahasa pemrograman yang sangat populer. Bahasa pemrograman ini diluncurkan pada tahun 1998. Sehingga kalau dihitung dari umur, Visual Basic 6 sudah berumur 18 tahun. Bahasa pemrograman Visual Basic 6 sangat mudah digunakan dan alurnya sederhana, memiliki learning curve yang sangat pendek, sehingga sangat cocok untuk orang-orang yang ingin memahami alur pemrograman dengan mudah. Karena kemudahannya itulah bahasa Visual Basic 6 masih digunakan sampai sekarang. meskipun sudah keluar penerusnya, yaitu VB.NET.
Berbeda dengan Bahasa Pemrograman lain seperti Delphi atau Java yang masih dikembangkan sampai sekarang. Proses pengembangan Visual Basic 6 sudah ditinggalkan oleh Microsoft. Namun tool-tool dan object yang tersedia sudah cukup mumpuni untuk membuat aplikasi-aplikasi sederhana maupun rumit. Itulah mengapa Visual Basic 6 berhasil lolos dari teori evolusi Darwin
Visual Basic 6 dan OOP
Dulu sekali ketika konsep OOP mulai booming, saya lupa tahunnya, kalau tidak salah waktu itu microsoft mengeluarkan VB.Net untuk menggantikan VB6. Banyak yang langsung bilang bahwa Visual Basic 6 itu kuno dan berbasis prosedural bukan OOP sehingga Visual Basic 6 bukan cuma kuno tetapi juga tidak kekinian. Seperti yang pernah saya alami. Pada dasarnya saya setuju kalau Visual Basic 6 itu sangat kuno, karena memang sudah tidak dikembangkan lagi. Kekinian juga tidak, apalagi kekirian, tetapi kalau masalah OOP? Visual Basic 6 belum OOP, mari kita lihat potongan kode berikut ini :
dim adocmd as adodb.command
set adocmd = new adodb.command
adocmd.ActiveConnetion = dbconn
adocmd.CommandType = text
adocmd.CommandText="Insert into ApaSaja (Keynya) values ('satu')"
adocmd.Execute
Kalau ada yang bilang Visual Basic 6 belum OOP, saya yakin mereka terlalu banyak memakai GUI, Saya dapat Visual Basic 6 waktu semester akhir, sebelumnya cuma dapat bahasa pemrograman kuno seperti Basica, Pascal dan Foxbase, Dapat kuliah Foxpro dan VB6 pas semester akhir, itupun mata kuliah konversi. Dan entah kenapa waktu itu saya tidak tertarik dengan Foxpro dan VB6, jadi sering bolos. Alhamdulilah karena sering bolos itulah, saya tidak terkena virus malas ngetik :P.
Sebuah sepeda tetaplah sebuah sepeda meski tidak memiliki rem
Sudah cukup curcolnya, sekarang mari kita coba membuat OOP dengan Visual Basic 6
Membuat Class di Visual Basic 6
Sebelum lanjut ke pembuatan class, sebagai contoh saya ingin membuat class/object "pasien".
Object pasien ini memiliki data:
1 NoCM
2. Nama Pasien
3. Alamat
4. TglLahir
Kemudian class/object ini memiliki method/fungsi:
1. Simpan Data
2. Hapus Data
3. Tampil Semua
4. Cari By Nama
Membuat Class
1. Untuk membuat kelas di Visual Basic 6, Pilih "Project" di menu, kemudian pilih "Add Class Module".
Setelah itu Klik Open
Lihat ke layar sebelah kanan, di Dock Project. Secara otomatis Visual Basic 6 akan membuat file class module.
2. Ganti nama classnya sesuai dengan nama class/object yang anda inginkan. contoh : Pasien
3. Buat variable lokal sebagai penanpung data seperti berikut:
Private m_NoCM As String
Private m_Nama As String
Private m_Alamat As String
Private m_TglLahir As Date
4. Sebuah Object atau class pasti memiliki property/data, sekarang mari kita buat Property untuk class pasien.
Property Get NoCM() As String
NoCM = m_NoCM
End Property
Property Let NoCM(ByVal NewVal As String)
m_NoCM = NewVal
End Property
Property Get Nama() As String
Nama = m_Nama
End Property
Property Let Nama(ByVal NewVal As String)
m_Nama = NewVal
End Property
Property Get Alamat() As String
Alamat = m_Alamat
End Property
Property Let Alamat(ByVal NewVal As String)
m_Alamat = NewVal
End Property
Property Get TglLahir() As Date
TglLahir = m_TglLahir
End Property
Property Let TglLahir(ByVal NewVal As Date)
m_TglLahir = NewVal
End Property
5. Sekarang saatnya membuat method atau fungsi yang bisa dilakukan oleh class pasien
- Lihat Data
Method ini digunakan untuk melihat semua data ataupun berdasarkan pencarian nama. pada saat load pertama, maka semua akan di load, tetapi bila textbox pencarian diisi, maka datanya akan terfilter sesuai kriteria.
Public Function Lihat_Data(Nama As String) As Recordset
Dim Irec As Long
ConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\ABSEN\test class VB6\Pasien.mdb;"
Set dbConn = New ADODB.Connection
dbConn.Open ConString
strSQL = "Select * from Pasien where Nama like '%" & Nama & "%'"
Set rs = New ADODB.Recordset
rs.Open strSQL, dbConn, adOpenStatic, adLockReadOnly
Set Lihat_Data = rs
Irec = rs.RecordCount
End Function
-Simpan Data
Saya sengaja menggabungkan proses Create dan Update, logikanya bila NoCM tidak ada, maka akan dijadikan data baru, jika NoCM ada, maka data akan di Update
Public Function SimpanData() As Boolean
Dim Irec As Long
Dim rs As New ADODB.Recordset
ConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\ABSEN\test class VB6\Pasien.mdb;"
Set dbConn = New ADODB.Connection
dbConn.Open ConString
Set rs = New ADODB.Recordset
rs.Open "Select NoCM from Pasien where NoCM = '" & Me.NoCM & "'", dbConn, adOpenStatic, adLockOptimistic
If rs.EOF = True Or rs.BOF = True Then
strSQL = "Insert into Pasien (NoCM, Nama, Alamat, TglLahir) values ( " & _
"'" & Me.NoCM & "', " & _
"'" & Me.Nama & "', " & _
"'" & Me.Alamat & "', " & _
"'" & Me.TglLahir & "' " & _
")"
Else
strSQL = "Update Pasien set Nama = '" & Me.Nama & "', " & _
"Alamat = '" & Me.Alamat & "'," & _
"TglLahir = '" & Me.TglLahir & "'" & _
"Where NoCM = '" & Me.NoCM & "'"
End If
dbConn.Execute strSQL, Irec
If Irec > 0 Then
SimpanData = True
Else
SimpanData = False
End If
End Function
-Hapus Data
Public Function HapusData() As Boolean
Dim Irec As Long
Dim rs As New ADODB.Recordset
ConString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\ABSEN\test class VB6\Pasien.mdb;"
Set dbConn = New ADODB.Connection
dbConn.Open ConString
strSQL = "Delete from Pasien where NoCM = '" & Me.NoCM & "'"
dbConn.Execute strSQL, Irec
If Irec > 0 Then
HapusData = True
Else
HapusData = False
End If
End Function
Pembuatan Class sudah selesai, sekarang saatnya kita membuat Form atau tampilannya.
Membuat Form
1. Ketika kita membuat project baru, secara otomatis akan tercipta Form baru. Atau bisa juga lewat menu project -> Add Form
2. Buatlah 4 label, 5 textbox, 1 flexgrid dan 4 Tombol.
3. Rubah Nama Textboxnya sesuai nama property class pasien. contohnya:
txtNoCM, txtNama, txtAlamat dan txtTglLahir dan yang terakhir adalah textbox untuk mencari nama, sebut saja txtCari.
4. Rubah nama flexgrid menjadi fg1, dan masing-masing tombol, ganti namanya menjadi cmdSimpan, cmdBatal, cmdHapus dan cmdTutup.
5. Membuat sub procedure untuk load data. prosedur ini untuk memudahkan penulisan pemangilan (maaf kebiasaan di VB6, prosedural banget hehe)
Private Sub PanggilSemua(Nama As String)
Dim Pasien1 As New Pasien
Set Pasien1 = New Pasien
With Pasien1.Lihat_Data(Nama)
fg1.Cols = .Fields.Count + 1
fg1.Rows = .RecordCount + 1
For n = 0 To .Fields.Count - 1
fg1.TextMatrix(0, n + 1) = .Fields(n).Name
Next
For i = 1 To Pasien1.Lihat_Data(Nama).RecordCount
fg1.TextMatrix(i, 1) = .Fields(0).Value
fg1.TextMatrix(i, 2) = .Fields(1).Value
fg1.TextMatrix(i, 3) = .Fields(2).Value
fg1.TextMatrix(i, 4) = .Fields(3).Value
.MoveNext
Next i
End With
End Sub
6. Simpan Data
Simpan Data adalah gabungan dari Create dan Update, Bila NoCM yang di input tidak ditemukan, maka akan dibuat Record Baru, bila ditemukan recordnya akan di Update.,
Klik ganda cmdSimpandata dan masukkan kodenya sehingga tampak seperti berikut:
Private Sub cmdSimpan_Click()
Dim Pasien1 As Pasien
Set Pasien1 = New Pasien
With Pasien1
.NoCM = txtNoCM.Text
.Nama = txtNama.Text
.Alamat = txtAlamat.Text
.TglLahir = txtTglLahir.Text
If .SimpanData = False Then
Call MsgBox("Penyimpanan Data Gagal", vbOKOnly, "Perhatian")
Else
Call MsgBox("Penyimpanan Data Berhasil", vbOKOnly, "Perhatian")
End If
End With
Call PanggilSemua("")
End Sub
7. Hapus Data
Script Hapus sangat sederhana, karena untuk menghapus data yang kita butuhkan hanya NoCMnya saja, sehingga kodenya seperti berikut ini
Private Sub cmdHapus_Click()
Dim Pasien1 As Pasien
Set Pasien1 = New Pasien
Pasien1.NoCM = fg1.TextMatrix(fg1.Row, 1)
If Pasien1.HapusData = False Then
Call MsgBox("Penghapusan Data Gagal", vbOKOnly, "Perhatian")
Else
Call MsgBox("Penghapusan Data Berhasil", vbOKOnly, "Perhatian")
End If
Call PanggilSemua("")
End Sub
8. Cari Data
Proses cari data sebenarnya hanya memanggil prosedure panggilsemua, berikut kodenya
Private Sub txtCari_Change()
Call PanggilSemua(txtCari.Text)
End Sub
9. Memindahkan data row yang dipilih di flexgrid ke Textbox.
Fungsi ini digunakan untuk memilih data dan merubah data.bila ingin merubah data, klik data pada flexgrid, kemudian rubah data, lalu klik Simpan.
Private Sub fg1_Click()
With fg1
txtNoCM.Text = .TextMatrix(.Row, 1)
txtNama.Text = .TextMatrix(.Row, 2)
txtAlamat.Text = .TextMatrix(.Row, 3)
txtTglLahir.Text = .TextMatrix(.Row, 4)
End With
End Sub
10. Sekarang kode untuk tutup Form
Private Sub cmdTutup_Click()
Unload Me
End Sub
11. Kode lengkapnya seperti dibawah ini :
Form1.frm
Private Sub cmdHapus_Click()
Dim Pasien1 As Pasien
Set Pasien1 = New Pasien
Pasien1.NoCM = fg1.TextMatrix(fg1.Row, 1)
If Pasien1.HapusData = False Then
Call MsgBox("Penghapusan Data Gagal", vbOKOnly, "Perhatian")
Else
Call MsgBox("Penghapusan Data Berhasil", vbOKOnly, "Perhatian")
End If
Call PanggilSemua("")
End Sub
Private Sub cmdSimpan_Click()
Dim Pasien1 As Pasien
Set Pasien1 = New Pasien
With Pasien1
.NoCM = txtNoCM.Text
.Nama = txtNama.Text
.Alamat = txtAlamat.Text
.TglLahir = txtTglLahir.Text
If .SimpanData = False Then
Call MsgBox("Penyimpanan Data Gagal", vbOKOnly, "Perhatian")
Else
Call MsgBox("Penyimpanan Data Berhasil", vbOKOnly, "Perhatian")
End If
End With
Call PanggilSemua("")
End Sub
Private Sub PanggilSemua(Nama As String)
Dim Pasien1 As New Pasien
Set Pasien1 = New Pasien
With Pasien1.Lihat_Data(Nama)
fg1.Cols = .Fields.Count + 1
fg1.Rows = .RecordCount + 1
For n = 0 To .Fields.Count - 1
fg1.TextMatrix(0, n + 1) = .Fields(n).Name
Next
For i = 1 To Pasien1.Lihat_Data(Nama).RecordCount
fg1.TextMatrix(i, 1) = .Fields(0).Value
fg1.TextMatrix(i, 2) = .Fields(1).Value
fg1.TextMatrix(i, 3) = .Fields(2).Value
fg1.TextMatrix(i, 4) = .Fields(3).Value
.MoveNext
Next i
End With
End Sub
Private Sub cmdTutup_Click()
Unload Me
End Sub
Private Sub fg1_Click()
With fg1
txtNoCM.Text = .TextMatrix(.Row, 1)
txtNama.Text = .TextMatrix(.Row, 2)
txtAlamat.Text = .TextMatrix(.Row, 3)
txtTglLahir.Text = .TextMatrix(.Row, 4)
End With
End Sub
Private Sub Form_Load()
Call PanggilSemua("")
End Sub
Private Sub txtCari_Change()
Call PanggilSemua(txtCari.Text)
End Sub
Private Sub Text1_Change()
Call PanggilSemua(Text1.Text)
End Sub
disini
wahhh bagus juga nih buat belajar di VB 6 ini mengenai CRUD akan tetapi, sayang di kampus saya tidak memakai ini lagi padahal bagus ini bahasa pemogramannya
ReplyDeleteIya gan, sekarang sudah nggak diajarkan lagi, Padalah klo buat rapid development bisa rapid banget gan, bisa bangun 1000 candi dalam satu malam
ReplyDeletePemrograman kok ada sepeda dan candi segala... Sepertinya kebanyakan gaul sama anak sastra ya :P
ReplyDeleteTerima kasih banyak mas, artikelnya sangat bagus sekali. Pas baca² kodingannya sambil bayangin OOP di Java. Haha, sekali lagi terima kasih mas
ReplyDeleteKeren bang
ReplyDelete