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.
    1. '------------------------------------------  
    2. ' VERSION 1.0 CLASS  
    3. ' Attribute VB_Name = "Form_frmIdentitasPerusahaan"  
    4.   
    5. ' Author: Bambang Subroto,   
    6. ' email: bambang.subro@gmail.com  
    7.   
    8. '------------------------------------------  
    9. Option Compare Database  
    10. Dim strNama, strAlamat, strKota, strPropinsi, strKodePos, strNegara As String  
    11. Dim strTelp, strFax, strWebsite, strEMail, strNPWP, strNPPKP As String  
    12. Function BandingkanData()  
    13. 'Memberikan nilai pembanding pada field setiap kali terjadi perubahan data yang tersimpan  
    14.   strNama = Nz(Me.Nama, "")  
    15.   strAlamat = Nz(Me.Alamat, "")  
    16.   strKota = Nz(Me.Kota, "")  
    17.   strPropinsi = Nz(Me.Propinsi, "")  
    18.   strKodePos = Nz(Me.KodePos, "")  
    19.   strNegara = Nz(Me.Negara, "")  
    20.   strTelp = Nz(Me.Telp, "")  
    21.   strFax = Nz(Me.Fax, "")  
    22.   strWebsite = Nz(Me.Website, "")  
    23.   strEMail = Nz(Me.Email, "")  
    24.   strNPWP = Nz(Me.NPWP, "")  
    25.   strNPPKP = Nz(Me.NPPKP, "")  
    26. End Function  
    27. Private Sub Form_Close()  
    28.   Form_frmMenus.Visible = True  
    29. End Sub  
    30. Private Sub Simpan_Click()  
    31. 'Menyimpan data dengan menggunakan Database Recordset. Jumlah record yang tersimpan  
    32. 'hanya satu untuk kemudian akan diedit bila ada perubahan record.  
    33.   Dim dbs As Database  
    34.   Dim rs As Recordset  
    35.   
    36.   Set dbs = Application.CurrentDb  
    37.   Set rs = CurrentDb.OpenRecordset("tblIdentitasPerusahaan")  
    38. 'Jika tabel belum berisi record, maka tambahkan record baru (AddNew) untuk disimpan.  
    39. 'Jika sudah ada satu record tersimpan, maka tampilkan record untuk diedit.  
    40.   If DCount("*""tblIdentitasPerusahaan") = 0 Then  
    41.       rs.AddNew  
    42.   Else  
    43.       rs.Edit  
    44.   End If  
    45.   rs.Fields("Nama") = Me.Nama  
    46.   rs.Fields("Alamat") = Me.Alamat  
    47.   rs.Fields("Kota") = Me.Kota  
    48.   rs.Fields("Propinsi") = Me.Propinsi  
    49.   rs.Fields("KodePos") = Me.KodePos  
    50.   rs.Fields("Telp") = Me.Telp  
    51.   rs.Fields("Fax") = Me.Fax  
    52.   rs.Fields("Negara") = Me.Negara  
    53.   rs.Fields("Website") = Me.Website  
    54.   rs.Fields("Email") = Me.Email  
    55.   rs.Fields("NPWP") = Me.NPWP  
    56.   rs.Fields("NPPKP") = Me.NPPKP  
    57.   rs.Update  
    58. 'Membandingkan record yang sudah ada dan menyimpannya dalam memori sementara  
    59.   BandingkanData  
    60.     
    61.   rs.Close  
    62.   Set rs = Nothing  
    63.   MsgBox "Data telah tersimpan.", vbOKOnly  
    64. End Sub  
    65. Private Sub Form_Open(Cancel As Integer)  
    66. 'Mengisikan field yang akan ditampilkan di layar dengan field yang tersimpan  
    67.   Dim dbs As Database  
    68.   Dim rst As Recordset  
    69.     
    70.   If IjinDitolak(Me.Name) Then  
    71.     MsgBox TampilkanLogin & " tidak bisa mengakses menu/form ini"  
    72.     Cancel = True  
    73.     Exit Sub  
    74.   End If  
    75.   Me.Caption = "Identitas Perusahaan " & Nz(IdPerusahaan("Nama"), "")  
    76.   If Not IsNull(Me.LoginPgn) Then Me.logout.Visible = True  
    77.   
    78.   Set dbs = Application.CurrentDb  
    79.   Set rst = CurrentDb.OpenRecordset("tblIdentitasPerusahaan")  
    80. 'Lakukan proses pengisian  
    81.   Do While Not rst.EOF  
    82.     Me.Nama = rst!Nama  
    83.     Me.Alamat = rst!Alamat  
    84.     Me.Kota = rst!Kota  
    85.     Me.Propinsi = rst!Propinsi  
    86.     Me.KodePos = rst!KodePos  
    87.     Me.Telp = rst!Telp  
    88.     Me.Fax = rst!Fax  
    89.     Me.Negara = rst!Negara  
    90.     Me.Website = rst!Website  
    91.     Me.Email = rst!Email  
    92.     Me.NPWP = rst!NPWP  
    93.     Me.NPPKP = rst!NPPKP  
    94.       
    95.     BandingkanData  
    96.       
    97.     rst.MoveNext  
    98.   Loop  
    99.       
    100. 'penyelesaian  
    101.   rst.Close  
    102.   Set rst = Nothing  
    103. End Sub  
    104. Private Sub Form_Unload(Cancel As Integer)  
    105. 'Pada saat for akan ditutup, jika ada nilai field yang berbeda dengan nilai field yang tersimpan  
    106. 'di memori sementara (atau ada perubahan data),tampilkan pesan peringatan apakah data yang tersimpan  
    107. 'di memori sementara tidak perlu disimpan di database dan form langsung ditutup.  
    108.   If Me.Nama <> strNama Or Me.Alamat <> strAlamat Or Me.Kota <> strKota Or Me.Propinsi <> strPropinsi Or Me.KodePos <> strKodePos Or _  
    109.     Me.Negara <> strNegara Or Me.Telp <> strTelp Or Me.Fax <> strFax Or Me.Website <> strWebsite Or Me.Email <> strEMail Or _  
    110.     Me.NPWP <> strNPWP Or Me.NPPKP <> strNPPKP Then  
    111.     If MsgBox("Ada data yang berubah. Apakah anda ingin keluar tanpa manyimpan data lebih dahulu?", vbYesNo) = vbYes Then  
    112.       Cancel = False  
    113.     Else  
    114.       Cancel = True  
    115.     End If  
    116.   End If  
    117. End Sub  
    118. Private Sub Nama_AfterUpdate()  
    119. 'Meng-update judul form seseuai dengan nama perusahaan.  
    120.   Me.Caption = "Identitas Perusahaan " & Me.Nama  
    121. 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:
  1. 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

Cara Mengatur dan Menggunakan ODBC untuk Mengakses Data Eksternal

Fungsi Untuk Membuka Database di Access VBA

Format Untuk Field Dengan Tipe Data Number dan Currency di MS Access