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:
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.
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:
- Gantilah judul “tblIdentitasPerusahaan” pada form header dengan nama “Identitas Perusahaan”
- Pada properti form, kosongkanlah properti Record Source dan berikan nilai untuk properti Record Selectors=No dan Navigation Buttons=No.
- Aturlah format dengan menggunakan AutoFormat1. Caranya, pilih tab Arrange, grup AutoFormat, lalu klik AutoFormat Wizard... dan pilih AutoFormat1.
- 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.
- 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.
- Simpanlah form ini dengan nama frmIdentitasPerusahaan.
- 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
- 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.
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
Post a Comment