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

Masih malas ngetik, atau cuma pengen lihat hasil akhirnya. Download aja filenya di:
disini



5 comments for "Mengenal OOP di Visual Basic 6 , Contoh Kasus CRUD Create Read Update Delete Data Pasien"

  1. 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

    ReplyDelete
  2. Iya gan, sekarang sudah nggak diajarkan lagi, Padalah klo buat rapid development bisa rapid banget gan, bisa bangun 1000 candi dalam satu malam

    ReplyDelete
  3. Pemrograman kok ada sepeda dan candi segala... Sepertinya kebanyakan gaul sama anak sastra ya :P

    ReplyDelete
  4. Terima kasih banyak mas, artikelnya sangat bagus sekali. Pas baca² kodingannya sambil bayangin OOP di Java. Haha, sekali lagi terima kasih mas

    ReplyDelete

Post a Comment