12. Mengenal Module
Module merupakan kumpulan deklarasi, statement dan prosedur yang disimpan secara bersama sama sebagai suatu kesatuan dengan satu nama untuk mengorganisasikan kode Visual Basic Microsoft. Microsoft Access mempunyai dua tipe module: Standar module dan class module.
Terdapat dua macam module dasar: class module dan standar module. Masing masing procedure dalam module dapat merupakan Function Procedure atau Sub Procedure.
Perintah Module dan Class Module (Insert Menu)
Module
Menyelipkan standar module baru dan menambahkan ke dalam projek aktif standar module.
Sebuah module hanya berisi prosedur, tipe dan deklarasi data dan definisi. Deklarasi level-module dan definisi dalam standar module adalah Public secara otomatis. Standar module merujuk pada code module pada visual basic versi terdahulu.
Class Module
Membuat class module baru dan menambahkan ke dalam project aktif kita. Module yang mengandung definisi dari class termasuk property-nya dan definisi metoda.
12.1 Class Module
Module form dan module report adalah class module yang bergabung dengan form atau report. Module form dan report biasanya berisi event procedure yang akan jalan bersama kejadian dalam form atau report. Kita dapat menggunakan event procedure untuk mengendalikan form dan report dan memberikan respons aksi kepada pemakai, misalnya dengan mengklik tombol perintah menggunakan mouse.
Jika kita membuat event procedure yang pertama untuk form atau report, secara otomatis microsoft access membuat module yang bergabung dengan form atau report. Untuk melihat module form dan report, pada toolbar design view form atau report klik kode (Code) jika ditunjuk dengan mouse.
Pada Access 95, class module hanya bergabung dengan form dan report, sedangkan pada Access 97 keatas, class module dapat berdiri sendiri, tipe class module ini terdapat pada daftar module pada object dalam Database Window.
2.1.1 Program dengan Class Module
Kita dapat membuat class module untuk membuat definisi pada object tertentu. Nama class module yang disimpan akan menjadi nama objectnya. Procedure public Sub dan public Function yang difefinisikan dalam class module menjadi metoda dari object. Procedur public Property Let, Property Get, dan Property Set menjadi sifat dari object.
Sekali kita mendefinisikan procedure dalam class module, kita dapat membuat object baru dengan membuat instance ( suatu code untuk perintah tertentu, code ini jadi seperti templete yang siap dipakai) baru dari class. Untuk membuat instance baru dari class, kita mendeklarasikan variabel dari jenis definisi dalam class. Misal nama class adalah BasicClassA kita dapat membuat instance baru dari hal berikut:
Dim abc As New BasicClassA
Jika kita menjalankan code yang berisi deklarasi ini, Visual Basic akan membuat instance baru. Kemudian kita dapat menggunakan metoda dan sifat sifatnya dengan menggunakan variabel abc. Misalnya jika kita mendefinisikan metoda tertentu dengan ListNames, kita dapat menggunakannya seperti berikut:
abc.ListNames
Membuat Default Instance pada Form Class
Jika kita membuka form menggunakan Form View baik dari pemakai atau dari Visual Basic, kita dapat membuat instance dari class module form tersebut. Dengan kata lain kita dapat mendesain tempat dalam memori dimana object tersebut berada, dan kemudian kita dapat memanggil metoda tersebut dan mengeset atau mengembalikan propertiesnya dari code. Hal yang sama ketika kita membuka report dengan Print Preview.
Ketika kita merujuk pada code Visual Basic, biasanya kita bekerja pada default instance dari class form. Class form hanya mempunyai satu default instance. Kita dapat membuat multiple instances dari class form yang sama dari Visual Basic. Ketika kita membuat multiple instances berarti kita membuat nondefault instances.
Terdapat empat cara untuk membuat default instance pada form. Kita dapat membuka form yang ada dengan menggunakan interface dengan mengaktifkan metoda OpenForm dari object DoCmd, dengan menggunakan metode CreateForm dan memindahkan form baru ke Form view, atau dengan menggunakan Visual Basic dalam membuat variabel tipe Form untuk merujuk ke default instance. Pada contoh berikut adalah membuka form Employees dan menunjuk variabel objet Form:
Dim frm As Form
DoCmd.OpenForm "Employees"
Set frm = Forms!Employees
Microsoft Access juga menyediakan shortcut yang dapat membuka form dan merujuk suatu method atau property dari form atau salah satu dari pengendalinya dalam satu step. Kita merujuk suatu class module form seperti pada contoh dibawah ini:
Form_Employees.Visible = True
Form_Employees.Caption = "New Employees"
Jika kita menjalankan code ini, Microsoft Access akan membuka form Employees form pada Form view jika belum dibuka dan mengeset form sehingga akan menampilkan "New Employees." Form tidak akan terlihat sampai kita menyatakan secara explisit dengan mengeset property Visible adalah True (1).
Jika kita mencoba menjalankan code ini sedangkan form Employee dibuka pada Design view, Microsoft Access akan melakukan run-time error. Form harus dibuka pada Form view atau tidak terbuka sama sekali. .
Membuat Multiple Nondefault Instances pada Forms
Kita bisa membuat multiple nondefault instances pada class form jika kita ingin memunculkan lebih dari satu instance pada form pada saat yang sama. Misal kita ingin menampilkan data employee dan manager pada saat yang sama. Kita dapat membuat instance dalam class form Employee untuk memunculkan data manager.
Untuk membuat nondefault instances baru pada form class dari Visual Basic, buat variabel dengan menulis nama module class form. Kita harus memasukkan keyword baru dalam variabel deklarasi. Misalnya pada code berikut membuat instance baru pada form Employee:
Dim frm As New Form_Employees
12.2 Module Object
Module object merujuk pada standard module atau class module.
Keterangan
Microsoft Access mempunyai class module yang tidak bergabung dengan suatu object, dan mempunyai modul form module serta modul report yang bergabung dengan form atau report.
Untuk menentukan suatu Module object merupakan standard module atau class module dari kodenya, dilihat dari tipe property Module object.
Kumpulan Module berisi semua module object terbuka dengan mengabaikan tipenya. Modul dalam kumpulan modul dapat dicompile atau tidak dicompile.
Referensi untuk menentukan standard object atau class Module object di dalam kumpulan Modul menggunakan formula berikut.
Syntax Description
Modules!namamodul Argumen namamodul adalah nama Module object.
Modules("namamodul") Argumen namamodul adalah nama Module object.
Modules(index) Argumen index adalah posisi numeric object didalam kumpulan modul.
Pada contoh berikut kita merujuk pada referensi standard Module object dan memberi tugas pada variabel object:
Dim mdl As Module
Set mdl = Modules![Utility Functions]
Tanda kurung siku merupakan nama modul ditulis sesuai dengan nama modul termasuk jika ada spasinya.
Pada contoh berikut modul object Form memberi tugas pada variabel object:
Dim mdl As Module
Set mdl = Modules!Form_Employees
Untuk merujuk pada modul form atau modul report, kita dapat menggunakan property modul object Form atau Report.
Forms!formname.Module
Pada contoh berikutnya Module object bergabung dengan Form Employees dan memberi tugas pada variabel object:
Dim mdl As Module
Set mdl = Forms!Employees.Module
Dengan merujuk pada formula Module object, kita dapat membuat dan membaca sifat modul dan menggunakan dengan tepat.
12.3 Standar Module
Standar module berisi prosedur umum yang tidak bergabung dengan suatu objek dan biasanya disebut procedure yang dapat dijalankan dari manapun dalam database kita. Untuk melihat daftar standar module dalam database, klik modules pada Database window dimana terdapat juga Forms, Reports, dan Modules. Contoh module dibawah ini dapat dijalankan dari mana saja di prosedure yang lain.
Prosedur adalah satuan kode Visual Basic. Prosedur berisi serangkaian pernyataan (statements) dan metoda (methods) yang menunjukkan sebuah operasi atau kalkulasi nilai. Misal pada contoh berikut adalah metode OpenForm untuk membuka form Orders.
Private Sub OpenOrders_Click()
DoCmd.OpenForm "Orders"
End Sub
Ada dua macam jenis procedures:
Sub procedures menunjukan suatu operasi atau serangkaian operasi tetapi tidak mengembalikan nilai. Kita dapat membuat Sub procedures sendiri atau menggunakan event procedure templates dimana Microsoft Access sudah membuatkan untuk kita.
Masing masing form dan report dalam database mempunyai built-in form module atau report module yang berisi event procedure templates. Kita dapat membuat code yang dapat berjalan dalam merespon kejadian dalam form, report atau mengendalikan form dan report.
Function procedures (sering disebut functions) mengembalikan suatu nilai, seperti hasil suatu kalkulasi. Microsoft Visual Basic menyertakan banyak built-in functions; misal, Now function mengembalikan tanggal dan waktu sekarang. Selain yang ada dalam built-in functions, kita dapat membuat function sendiri.
Berikut ini adalah Function procedure, FirstOfNextMonth, yang mengembalikan tanggal dan hari pada bulan ini mengikuti tanggal saat ini:
Function FirstOfNextMonth()
FirstOfNextMonth = _DateSerial(Year(Now), Month(Now) + 1, 1)
End Function