Skip to main content

Memasukkan Data ke Tabel Menggunakan Class Module di Form Identitas Perusahaan

Pada bagian ini kita akan memasukkan data dengan menggunakan kode VBA yang kita buat sendiri. Kita akan menggunakan tblIdentitasPerusahaan sebagai contohnya. Tabel ini hanya menyimpan satu record yang bisa kita edit sewaktu-waktu.

Sorotlah tblIdentitasPerusahaan, lalu buatlah form melalui tab Create dan pilih Form pada grup Forms, lalu ubahlah tampilannya dalam Design view sehingga diperoleh hasil seperti gambar di bawah.


Editlah form dengan mengikuti langkah berikut ini:
  1. Gantilah judul “tblIdentitasPerusahaan” pada form header dengan nama “Identitas Perusahaan”
  2. Pada properti form, kosongkanlah properti Record Source dan berikan nilai untuk properti Record Selectors=No dan Navigation Buttons=No. 
  3. Aturlah format dengan menggunakan AutoFormat1. Caranya, pilih tab Arrange, grup AutoFormat, lalu klik AutoFormat Wizard... dan pilih AutoFormat1.
  4. Kosongkanlah (unbound) properti Control Source pada semua text box : Nama, Alamat, Kota, Propinsi, KodePos, Negara,  Telp, Fax, Website, Email, NPWP, dan NPPKP. Tampilan gambar di atas akan menjadi seperti gambar berikut ini.
  5. Non-aktifkan Use Control Wizards dan tambahkan tombol perintah Button(Form Control) di bagian form footer bagian kanan bawah, seperti gambar di atas. Beri nama “Simpan” pada properti Name dan Caption.
  6. Simpanlah form ini dengan nama frmIdentitasPerusahaan.
  7. Berikut ini adalah VBA code yang ada dalam form atau class module Form_frmIdentitasPerusahaan. Berikan nilai atau aktifkan event procedure pada text box properti Nama After Update, form On Open dan On Unload, serta tombol perintah Simpan On Click, seperti pada gambar di bawah. 
    Catatan: Tanda  spasi yang diikuti tanda “_” (garis bawah) memberitahu VBA bahwa pernyataan itu belum selesai, tetapi dilanjutkan ke baris berikutnya. Tanda  itu digunakan untuk memisahkan satu baris kode menjadi lebih dari dua baris, untuk membuat kode lebih mudah dibaca.
    '------------------------------------------
    ' VERSION 1.0 CLASS
    ' Attribute VB_Name = "Form_frmIdentitasPerusahaan"
    ' 
    ' Author: Bambang Subroto, 
    ' email: bambang.subro@gmail.com
    ' 
    '------------------------------------------
    Option Compare Database
    Dim strNama, strAlamat, strKota, strPropinsi, strKodePos, strNegara As String
    Dim strTelp, strFax, strWebsite, strEMail, strNPWP, strNPPKP As String
    Function BandingkanData()
    'Memberikan nilai pembanding pada field setiap kali terjadi perubahan data yang tersimpan
      strNama = Nz(Me.Nama, "")
      strAlamat = Nz(Me.Alamat, "")
      strKota = Nz(Me.Kota, "")
      strPropinsi = Nz(Me.Propinsi, "")
      strKodePos = Nz(Me.KodePos, "")
      strNegara = Nz(Me.Negara, "")
      strTelp = Nz(Me.Telp, "")
      strFax = Nz(Me.Fax, "")
      strWebsite = Nz(Me.Website, "")
      strEMail = Nz(Me.Email, "")
      strNPWP = Nz(Me.NPWP, "")
      strNPPKP = Nz(Me.NPPKP, "")
    End Function
    Private Sub Form_Close()
      Form_frmMenus.Visible = True
    End Sub
    Private Sub Simpan_Click()
    'Menyimpan data dengan menggunakan Database Recordset. Jumlah record yang tersimpan
    'hanya satu untuk kemudian akan diedit bila ada perubahan record.
      Dim dbs As Database
      Dim rs As Recordset
    
      Set dbs = Application.CurrentDb
      Set rs = CurrentDb.OpenRecordset("tblIdentitasPerusahaan")
    'Jika tabel belum berisi record, maka tambahkan record baru (AddNew) untuk disimpan.
    'Jika sudah ada satu record tersimpan, maka tampilkan record untuk diedit.
      If DCount("*", "tblIdentitasPerusahaan") = 0 Then
          rs.AddNew
      Else
          rs.Edit
      End If
      rs.Fields("Nama") = Me.Nama
      rs.Fields("Alamat") = Me.Alamat
      rs.Fields("Kota") = Me.Kota
      rs.Fields("Propinsi") = Me.Propinsi
      rs.Fields("KodePos") = Me.KodePos
      rs.Fields("Telp") = Me.Telp
      rs.Fields("Fax") = Me.Fax
      rs.Fields("Negara") = Me.Negara
      rs.Fields("Website") = Me.Website
      rs.Fields("Email") = Me.Email
      rs.Fields("NPWP") = Me.NPWP
      rs.Fields("NPPKP") = Me.NPPKP
      rs.Update
    'Membandingkan record yang sudah ada dan menyimpannya dalam memori sementara
      BandingkanData
      
      rs.Close
      Set rs = Nothing
      MsgBox "Data telah tersimpan.", vbOKOnly
    End Sub
    Private Sub Form_Open(Cancel As Integer)
    'Mengisikan field yang akan ditampilkan di layar dengan field yang tersimpan
      Dim dbs As Database
      Dim rst As Recordset
      
      If IjinDitolak(Me.Name) Then
        MsgBox TampilkanLogin & " tidak bisa mengakses menu/form ini"
        Cancel = True
        Exit Sub
      End If
      Me.Caption = "Identitas Perusahaan " & Nz(IdPerusahaan("Nama"), "")
      If Not IsNull(Me.LoginPgn) Then Me.logout.Visible = True
    
      Set dbs = Application.CurrentDb
      Set rst = CurrentDb.OpenRecordset("tblIdentitasPerusahaan")
    'Lakukan proses pengisian
      Do While Not rst.EOF
        Me.Nama = rst!Nama
        Me.Alamat = rst!Alamat
        Me.Kota = rst!Kota
        Me.Propinsi = rst!Propinsi
        Me.KodePos = rst!KodePos
        Me.Telp = rst!Telp
        Me.Fax = rst!Fax
        Me.Negara = rst!Negara
        Me.Website = rst!Website
        Me.Email = rst!Email
        Me.NPWP = rst!NPWP
        Me.NPPKP = rst!NPPKP
        
        BandingkanData
        
        rst.MoveNext
      Loop
        
    'penyelesaian
      rst.Close
      Set rst = Nothing
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    'Pada saat for akan ditutup, jika ada nilai field yang berbeda dengan nilai field yang tersimpan
    'di memori sementara (atau ada perubahan data),tampilkan pesan peringatan apakah data yang tersimpan
    'di memori sementara tidak perlu disimpan di database dan form langsung ditutup.
      If Me.Nama <> strNama Or Me.Alamat <> strAlamat Or Me.Kota <> strKota Or Me.Propinsi <> strPropinsi Or Me.KodePos <> strKodePos Or _
        Me.Negara <> strNegara Or Me.Telp <> strTelp Or Me.Fax <> strFax Or Me.Website <> strWebsite Or Me.Email <> strEMail Or _
        Me.NPWP <> strNPWP Or Me.NPPKP <> strNPPKP Then
        If MsgBox("Ada data yang berubah. Apakah anda ingin keluar tanpa manyimpan data lebih dahulu?", vbYesNo) = vbYes Then
          Cancel = False
        Else
          Cancel = True
        End If
      End If
    End Sub
    Private Sub Nama_AfterUpdate()
    'Meng-update judul form seseuai dengan nama perusahaan.
      Me.Caption = "Identitas Perusahaan " & Me.Nama
    End Sub
    
  8. Tampilan akhir form beserta record yang tersimpan tampak seperti pada gambar di bawah ini. Kita dapat menambahkan tombol perintah preview, print, atau tombol lainnya yang mungkin berguna.
Pada bagian Private Sub Form_Open(Cancel As Integer) ada perintah:
Me.Caption = "Identitas Perusahaan " & Nz(IdPerusahaan("Nama"), "")
Artinya, pada saat form frmIdentitasPerusahaan dibuka, maka judul (Caption) form akan berganti sesuai dengan nama perusahaan. Fungsi IdPerusahaan("Nama") artinya, memerintahkan Access untuk mengkases field “Nama” yang ada pada tblIdentitasPerusahaan dan menampilkannya isinya. Fungsi itu ada di modul mdlGlobal.

Kita dapat mengeksekusikan perintah itu setiap kali sebuah form atau report dibuka, tentu saja dengan mengganti keterangan “Identitas Perusahaan” dengan keterangan yang sesuai dengan form yang terbuka, misalnya "Daftar Kode Rekening - Rekening Utama " untuk form frmRekUtama, "Daftar Kode Rekening - Rekening Derivatif 1 " untuk frmRekDerivatif1, dan seterusnya.

Comments

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access