Pengantar
Microsoft Access menyertakan sejumlah fitur untuk memungkinkan pengembang database membuat formulir entri data, laporan, dan kueri yang dapat memandu pengguna dalam kueri data yang ada dalam database dan memasukkan data baru. Berbagai pembuat kueri dan alat wizard memudahkan proses pengembangan ini. Bahkan dengan alat ini, bagaimanapun, mungkin ada situasi di mana pengembang ingin menambahkan lebih banyak fungsionalitas yang belum disediakan oleh alat pengembangan MS Access. Misalnya, pengembang mungkin ingin secara otomatis memperbaiki data yang buruk sebelum disimpan dalam database, menunjukkan peringatan jika aturan bisnis dilanggar, membantu pengguna menavigasi dari satu formulir entri data ke formulir entri data lainnya, atau meluncurkan laporan dengan beberapa filter khusus. Cara untuk mencapai penyesuaian tersebut adalah dengan menambahkan kode menggunakan bahasa pemrograman Visual Basic for Applications.
Visual Basic for Applications (VBA) adalah bahasa pemrograman yang digunakan dalam keluarga produk perangkat lunak Microsoft Office seperti Excel dan Access. Bahasa VBA berasal dari bahasa "Basic" yang ditemukan pada tahun 1964 yang menjadi populer di komputer pribadi pada tahun 1970-an. Bagian "Visual" dari nama tersebut ditambahkan oleh Microsoft untuk mencerminkan penggunaan bahasa pemrograman Basic di Microsoft Windows.
Ada banyak tutorial yang memperkenalkan pemrograman Dasar. Tutorial ini akan fokus pada sebagian kecil fitur bahasa VBA seperti yang digunakan di MS Access.
Isi
- Acara di Microsoft Access
- Contoh Kode VBA:Memastikan nama dalam Kasus yang Tepat
- Bahasa VBA – Mendeklarasikan dan Menugaskan ke Variabel, Pernyataan Bersyarat, dan Komentar
- Bahasa VBA – Fungsi, Metode, dan Contoh
- Bahasa VBA – Properti
- Latihan Pengkodean VBA
- Menangani Kesalahan di VBA
- Menjalankan Kueri SQL Kustom di VBA
Halaman berikutnya memperkenalkan Acara di Microsoft Access.
Acara di Microsoft Access
Di Access, kode pemrograman VBA dilampirkan ke formulir dan laporan dan dapat diatur untuk dijalankan pada waktu tertentu atau sebagai reaksi terhadap peristiwa tertentu. Gaya pemrograman ini kadang-kadang disebut sebagai pemrograman "Berbasis Peristiwa" yang berarti kode yang ditulis pengembang akan dijalankan sebagai respons terhadap beberapa peristiwa .
Saat formulir ditampilkan di Tampilan Formulir, biasanya akan menanyakan data yang ada dari tabel yang mendasarinya, lalu diam di sana hingga pengguna melakukan sesuatu. Misalnya, pengguna bisa mengklik salah satu tombol navigasi untuk pindah ke rekaman berikutnya, mereka bisa mengklik kotak teks dan mulai mengetik beberapa data baru atau mereka mungkin mengklik tombol Tutup untuk menutup formulir. Setiap tindakan ini menghasilkan Peristiwa terjadi dalam bentuk. Setiap klik mouse atau sapuan keyboard ditangani sebagai suatu peristiwa.
Untuk sebagian besar, peristiwa memiliki perilaku default. Mengklik tombol navigasi "catatan berikutnya" menyebabkan formulir bergulir ke catatan data berikutnya. Mengetik huruf "C" saat kursor berada di kotak teks menyebabkan huruf "C" muncul di kotak teks. Menekan tombol TAB menyebabkan kursor melompat ke kotak teks berikutnya (atau kontrol) pada formulir dan seterusnya. Seorang programmer dapat mengganti atau meningkatkan perilaku default ini dan menyisipkan kode mereka sendiri untuk dijalankan sebagai respons terhadap peristiwa tersebut.
Pemrograman VBA pada Formulir dan Laporan Akses terutama difokuskan pada penulisan kode untuk merespons berbagai peristiwa.
Sebelum menyelami detail acara, ada baiknya menerapkan contoh sederhana. Untuk melihat beberapa kode beraksi, bagian selanjutnya dari tutorial ini memberikan panduan untuk menambahkan kode VBA ke formulir entri data.
Contoh Kode VBA:Memastikan nama dalam Kasus yang Tepat
Berikut ini adalah contoh yang relatif singkat dan sederhana untuk menambahkan kode VBA ke formulir entri data di MS Access. Beberapa detail akan dilewati untuk tujuan singkatnya. Setelah contoh ini, sisa tutorial ini akan mengisi detail tersebut.
Contoh ini menggunakan Pelanggan formulir entri data yang disesuaikan dalam tutorial Formulir MS Access Lanjutan. Anda mungkin ingin menyelesaikan tutorial itu (atau setidaknya bagian yang berhubungan dengan formulir entri data Pelanggan) sebelum melanjutkan.
Saat memasukkan informasi pelanggan baru, kami ingin memastikan bahwa nama Pelanggan dimasukkan dalam "kasus yang tepat". Artinya, huruf pertama nama harus huruf kapital dan sisa nama harus huruf kecil. Jika pengguna memasukkan:“joe”, kami ingin formulir secara otomatis mengoreksi ini menjadi huruf besar yang benar:“Joe”.
Dalam hal Event, kami akan menambahkan kode yang terhubung ke event After Update untuk field First Name pada form pelanggan. Artinya setelah sesuatu telah diubah (diperbarui ) di bidang Nama Depan, acara Setelah Pembaruan akan dipicu dan kemudian kode yang akan kita tulis akan bekerja untuk memastikan nama apa pun yang diketik diubah menjadi huruf besar/kecil yang benar.
Langkah-langkah berikut menempatkan kode ini pada tempatnya.
- Buka entri data Pelanggan untuk dalam Mode Desain.
- Klik Kanan pada Nama Depan kotak teks dan pilih Properti dari menu pop-up.
- Saat Lembar Properti ditampilkan, klik pada tab Acara. Ini ditunjukkan pada gambar di bawah ini:
Perhatikan daftar acara yang ditampilkan. Masing-masing dapat diprogram untuk merespons peristiwa tertentu yang terjadi pada FirstName kotak teks.
- Buat event handler baru dengan mengklik tiga titik di sebelah kanan event After Update.
- The Pilih Pembuat jendela akan muncul. Pilih Pembuat Kode lalu klik Oke tombol.
- Jendela pengeditan kode VBA akan muncul. Perhatikan bahwa Access telah membuat rintisan subrutin yang dimulai dengan kata Private Sub dan diakhiri dengan kata End Sub.
Nama subrutin dibuat menggunakan nama kontrol formulir (NamaDepan) dan nama Peristiwa yang akan ditanggapi oleh subrutin ini (AfterUpdate).Baris Akhir Sub adalah tempat subrutin khusus ini akan selesai.
- Tambahkan kode berikut pada baris kosong antara Private Sub dan End Sub.:
FirstName = StrConv(FirstName, vbProperCase)
Setelah selesai maka akan muncul kode sebagai berikut:
Baris kode baru ini melakukan hal berikut:
StrConv adalah fungsi yang mengambil isi dari kotak teks FirstName dan mengubahnya sesuai dengan parameter kedua yang diberikan yaitu vbProperCase dalam contoh ini. Setelah konversi ini selesai, hasilnya akan diberikan (menggunakan tanda sama dengan) kembali ke kotak teks FirstName. Ini akan menimpa apa pun yang saat ini ada di kotak teks FirstName. Misalnya fungsi ini akan mengambil “sally”, mengubahnya menjadi “Sally” dan kemudian memasukkan “Sally” ke dalam textbox FirstName.
- Simpan kode baru ini dengan menarik File menu dan memilih Simpan .
- Uji kode baru. Beralih kembali ke layar Mode Desain Microsoft Access. Ubah tampilan menjadi Tampilan Formulir.
- Menavigasi ke catatan kosong. Klik bidang FirstName dan ketikkan nama dengan huruf kecil semua:
- Tekan Tab untuk pindah ke kotak teks berikutnya. Nama Joe harus diubah menjadi "Joe" seperti yang ditunjukkan di bawah ini:
- Jika Anda menerima kesalahan, alihkan kembali ke editor kode VBA dan pastikan Anda telah mengeja semua bagian kode dengan benar. Anda mungkin perlu menurunkan Run menu dan pilih Setel Ulang untuk menghentikan kode VBA agar tidak berjalan.
Contoh di atas memberikan tampilan cepat tentang bagaimana seseorang dapat menyesuaikan perilaku formulir untuk membantu pengguna memasukkan data yang diformat dengan baik ke dalam database. Beberapa detail dilewati selama contoh ini dan detail tersebut akan dibahas di sisa tutorial ini.
Bahasa VBA
Bagian ini secara singkat memperkenalkan bagian-bagian utama dari bahasa VBA seperti yang digunakan dalam MS Access. Tinjauan komprehensif VBA berada di luar cakupan tutorial ini. Referensi ke buku dan materi yang lebih komprehensif disediakan di akhir tutorial ini.
Mendeklarasikan Variabel
Sebuah variabel adalah nama yang diberikan untuk placeholder di mana programmer dapat menyimpan beberapa data. Misalnya, variabel mungkin digunakan untuk menyimpan angka saat kita melakukan beberapa operasi matematika di atasnya atau membandingkan nilainya dengan variabel lain. Variabel dapat dideklarasikan untuk menampung nilai dari tipe data tertentu seperti Integer, String atau Tanggal. Untuk mendeklarasikan variabel baru, gunakan pernyataan Dim. Misalnya, untuk mendeklarasikan variabel baru bernama MyName dan atur untuk menahan String (karakter), lakukan hal berikut:
Redupkan strMyName Sebagai String
Untuk mendeklarasikan variabel baru bernama "AccountBalance" dan mengaturnya untuk menyimpan angka dengan desimal, gunakan yang berikut ini:
Redupkan dblAccountBalance Sebagai Ganda
Menetapkan Nilai
Nilai dapat diberikan ke variabel atau kontrol pada formulir menggunakan tanda sama dengan. Misalnya, untuk menyimpan nama “Alex” di variabel MyName gunakan yang berikut ini:
strMyName =“Alex”
Untuk menyalin isi kotak teks FirstName ke variabel MyName, gunakan:
strNamaSaya =[Nama Depan]
Nilai juga dapat dihitung sebelum ditetapkan. Misalnya, ekspresi berikut mengambil saldo akun pelanggan saat ini dari kotak teks [Saldo], menambahkan bunga 1% (dengan mengalikan saldo dikalikan 1,01) dan kemudian mengurangi hasilnya sebesar $10. Terakhir, hasilnya ditetapkan ke variabel AccountBalance.
dblAccountBalance =( [Saldo] * 1.01 ) – 10.00
Pernyataan Bersyarat
Pernyataan bersyarat menggunakan tes logis untuk menentukan baris kode mana yang akan dijalankan selanjutnya. Pernyataan bersyarat If … Then cukup sering digunakan. Misalnya:
If AccountBalance < 1000 Then MonthlyFee = 10 Else MonthlyFee = 0 End If
Ekspresi logis AccountBalance <1000 dievaluasi. Jika ekspresi ini benar (misalnya jika AccountBalance adalah $400) maka baris berikutnya setelah Then dijalankan. Dalam contoh ini, Biaya Bulanan =10.
Jika ekspresi ini False, maka baris setelah Else dijalankan.
Ekspresi logika dapat mencakup beberapa bagian yang dihubungkan oleh operator Boolean OR, AND dan NOT. Diskusi yang lebih menyeluruh tentang ekspresi Boolean dapat ditemukan di tutorial pemrograman ini. Misalnya, kita membebaskan biaya bulanan jika umur rekening kurang dari satu tahun. Asumsikan kami memiliki AccountAge sebagai usia akun dalam bulan. Maka kodenya adalah:
If AccountBalance < 1000 AND AccountAge > 12 Then MonthlyFee = 10 Else MonthlyFee = 0 End If
Lebih dari satu baris kode dapat dijalankan dalam pernyataan If … Then dan If … Then pernyataan dapat bersarang satu sama lain.
Komentar
Saat memprogram dalam bahasa pemrograman apa pun, sebaiknya sertakan komentar yang menjelaskan kode tersebut. Dalam VBA komentar dapat dimasukkan dengan memulai dengan satu kutipan. Mengambil contoh di atas, kami dapat menambahkan komentar berikut:
Lebih banyak bagian dari bahasa VBA dibahas di halaman berikutnya.
Bahasa VBA – Lanjutan
Fungsi
Bahasa VBA memiliki sejumlah besar fungsi dan Metode bawaan yang dapat digunakan untuk melakukan berbagai tugas seperti fungsi matematika (sin, cos, tan), fungsi string, dan banyak lainnya. Fungsi biasanya memiliki satu atau lebih parameter input yang digunakan oleh fungsi tersebut. Misalnya, dalam fungsi Cos(45) "45" adalah sudut input yang akan dioperasikan oleh fungsi kosinus. Fungsi StrConv memerlukan dua parameter input:String yang akan dikonversi dan gaya konversi:
StrConv(Nama Depan, vbProperCase)
Beberapa fungsi praktis meliputi:
MsgBox( prompt, tombol, judul) | Menampilkan kotak pesan pop up dengan teks, tombol, dan judul prompt |
StrConv( ekspresi, gaya ) | Mengubah ekspresi string menjadi huruf besar, huruf kecil atau huruf besar |
Kiri( ekspresi, karakter ) | Ambil karakter paling kiri dari ekspresi string |
Pertengahan( ekspresi, awal, karakter ) | Ambil set karakter tengah dari ekspresi string mulai dari awal |
IsNull( ekspresi ) | Uji apakah ekspresi string (atau kotak teks) tidak memiliki konten (bernilai null) |
Nz( ekspresi, nilai_if_null ) | Jika ekspresinya null, isi nilai defaultnya |
Sekarang() | Mengembalikan tanggal dan waktu saat ini |
Bulat(ekspresi, desimal ) | Membulatkan ekspresi numerik ke sejumlah tempat desimal |
RGB( merah, hijau, biru ) | Mengembalikan bilangan bulat warna berdasarkan kombinasi merah, hijau dan biru |
Metode
Metode dalam VBA seperti fungsi tetapi terhubung dengan kontrol atau objek lain pada formulir atau laporan.
Beberapa metode praktis meliputi:
DoCmd.CancelEvent | Membatalkan acara saat ini yang sedang ditangani |
DoCmd.Tutup | Tutup formulir (atau database) saat ini |
DoCmd.OpenForm | Membuka formulir baru |
DoCmd.OpenReport | Jalankan perintah MS Access seperti menyimpan data baru atau yang diperbarui, membatalkan perubahan, atau keluar dari formulir |
.SetFocus | Setel fokus ke kontrol pada formulir |
.Urungkan | Batalkan perubahan atau perintah terbaru |
.Segarkan | Memperbarui semua data yang mendasari formulir |
.Permintaan | Meminta data yang diberikan ke formulir |
.Cat ulang | Mengecat ulang semua kontrol pada formulir |
Banyak lagi fungsi dan metode yang terdaftar di situs Microsoft ini.
Kumpulan contoh berikut menggunakan berbagai fungsi dan metode dalam kombinasi yang berbeda.
Contoh
Tunjukkan peringatan kepada pengguna jika saldo akun di bawah $1.000
If AccountBalance < 1000 Then MsgBox("Warning: The Account Balance is now less than $1,000.") End If
Jika kotak teks FirstName pada formulir memiliki sesuatu di dalamnya, maka ubah menjadi huruf besar/kecil
If Not IsNull( [FirstName] ) Then FirstName = StrConv( [FirstName], vbProperCase ) End If
halaman berikutnya memperkenalkan Properti objek yang berbeda.
Properti
Setiap elemen pada formulir atau laporan entri data memiliki sekumpulan properti terkait dengannya. Properti mengontrol penempatan, warna, font, latar belakang dan tampilan lain serta atribut pemformatan dari setiap kontrol. Misalnya, beberapa dari banyak properti TextBox termasuk:
Terlihat | Menentukan apakah kotak teks terlihat pada formulir |
Terkunci | Menentukan apakah data dalam kotak teks dapat diubah |
Indeks Tab | Pengurutan setiap kontrol saat pengguna menavigasi formulir dengan menekan Tab |
Label | Mengidentifikasi nama label yang terkait dengan kotak teks |
Lebar, Tinggi, Posisi Atas dan Bawah | Menunjukkan posisi relatif dan ukuran kotak teks |
Gaya dan warna latar belakang | Menyetel gaya latar belakang dan warna kotak teks |
Gaya dan warna batas | Menyetel gaya dan warna batas di sekitar kotak teks |
Ukuran font, berat, garis bawah, miring, warna, dan perataan | Menyetel font dan gaya |
Margin dan spasi padding – Mengatur margin dan padding di sekitar bagian dalam kotak teks |
Properti dapat diatur menggunakan Tampilan Desain dan disimpan dengan formulir atau laporan. Properti juga dapat diubah menggunakan kode VBA saat formulir berjalan. Untuk mengakses properti di VBA, gunakan nama kontrol, lalu titik, lalu nama properti. Misalnya, kode berikut mengubah warna font kotak teks CustomerID menjadi Merah:
CustomerID.ForeColor =vbRed
Bagian berikut memberikan beberapa latihan yang menggabungkan bagian berbeda dari bahasa pemrograman VBA untuk menyesuaikan perilaku berbagai formulir entri data.
Latihan Kode VBA
Cobalah latihan berikut yang menyesuaikan formulir. Lihat kembali bagian sebelumnya untuk contoh kode yang dapat disesuaikan agar sesuai dengan latihan saat ini.
Latihan 1
Ubah formulir CustomerDataEntry untuk menambahkan dua event handler AfterUpdate yang akan mengonversi First Name dan Last Name menjadi huruf besar yang benar (Buat handler AfterUpdate terpisah untuk setiap kotak teks). Tulis kode untuk memeriksa terlebih dahulu untuk memastikan kotak teks tidak kosong sebelum mencoba mengonversi teks.
Latihan 2
Ubah formulir AccountsDataEntry untuk menambahkan event handler AfterUpdate yang akan menampilkan kotak pesan peringatan jika saldo akun di bawah $5.000. Ubah juga warna font kotak teks Balance menjadi Merah.
Latihan 3
Ubah formulir Entri Data Pelanggan. Buat subrutin Saat Hilang Fokus yang mengubah label untuk kotak teks FirstName menjadi merah (vbRed) jika pengguna meninggalkan kotak teks FirstName tanpa mengetik apa pun. Atur label menjadi biru (vbBlue) jika ada sesuatu di kotak teks. Pada contoh di bawah ini tidak ada yang diketik di kotak teks FirstName dan kemudian pengguna membuka tab ke kotak teks berikutnya yang menyebabkan label FirstName berubah menjadi merah.
Halaman berikutnya dari tutorial ini membahas cara menangani kesalahan dalam kode VBA.
Menangani Kesalahan di VBA
Terkadang kode VBA akan mengalami kesalahan. Misalnya, jika kotak teks kosong dan kami mencoba mengubah konten kotak teks menjadi huruf besar/kecil, fungsi StrCnv akan gagal. Contoh lain adalah ketika pembagian dengan nol terjadi. Tanpa penanganan kesalahan, masalah ini dapat menyebabkan program VBA macet. Saat terjadi kesalahan, kode khusus dapat bertindak untuk menangani kesalahan dan melanjutkan pemrosesan kode VBA.
Dua fitur penanganan kesalahan utama VBA adalah pernyataan On Error Goto dan pernyataan Resume Next. Kedua pernyataan kode VBA ini bekerja sama untuk mencegah VBA membuat aplikasi mogok.
Pernyataan On Error Goto menginformasikan VBA tentang apa yang harus dilakukan ketika terjadi kesalahan dalam subrutin. Bagian Goto dari pernyataan mereferensikan label di tempat lain dalam kode tempat VBA akan terus bekerja. Setelah program VBA sampai ke label, kesalahan apa pun akan muncul di objek yang disebut Err. Properti Err.Description akan berisi deskripsi teks tentang kesalahan terbaru yang ditemukan. Pernyataan Resume Next akan menyebabkan program VBA terus berjalan dari titik setelah kesalahan terjadi.
Contoh berikut memperluas rutinitas FirstName_AfterUpdate yang diperkenalkan di awal tutorial ini. Sekarang program VBA dapat menangani kesalahan yang mungkin terjadi dalam program.
Private Sub FirstName_AfterUpdate ' Subroutine to convert the FirstName of the customer to Proper Case On Error Goto FirstName_AfterUpdate_Error_Handler FirstName = StrConv(FirstName, vbProperCase) ' If the conversion was successful, exit this subroutine Exit Sub FirstName_AfterUpdate_Error_Handler: ' If there is an error show the description of the error MsgBox Err.Description ' Resume with the next statement In the subroutine Resume Next End Sub
bagian selanjutnya dari tutorial ini membahas bagaimana memasukkan kode SQL dalam VBA.
Menjalankan Kueri SQL Kustom di VBA
Structured Query Language (SQL) adalah bahasa pemrograman yang digunakan dalam database relasional seperti MS Access, SQL Server, Oracle dan banyak lainnya. Pernyataan SQL dapat digunakan untuk menyisipkan, memperbarui, menghapus, dan mengambil (memilih) catatan data dari tabel (di antara banyak kemampuan lainnya). Contoh sederhana dari pernyataan SQL adalah:
SELECT customerid, firstname, lastname FROM customer
Kode SQL dapat ditulis dalam VBA dan dijalankan pada waktu yang tepat. Misalnya, subrutin VBA dapat ditulis untuk menanyakan tabel Pelanggan untuk menemukan ID Pelanggan tertinggi. Kemudian kita dapat menambahkan 1 ke nomor ini untuk mendapatkan ID Pelanggan baru yang tidak digunakan untuk rekor baru.
Langkah-langkah umum untuk melakukan jenis tugas ini adalah:
Buat pernyataan SQL
Jalankan Pernyataan SQL menggunakan koneksi database terbuka (bernama CurrentDb di VBA)
Ambil catatan yang dihasilkan dan gunakan data yang diambil
Untuk membuat subrutin VBA ini, buka formulir CustomerDataEntry dan dapatkan properti bidang CustomerID. Di bawah tab acara, klik tiga titik di sebelah kanan acara Di Klik Dbl. Pilih pembuat Kode dan rintisan akan dibuat sebagai berikut:
Private Sub CustomerID_DblClick(Cancel As Integer) End Sub
Tambahkan kode berikut:
Private Sub CustomerID_DblClick(Cancel As Integer) ' Create a new CustomerID when user double-clicks in the CustomerID field On Error GoTo ErrorHandler Dim rstResults As Recordset ' This will hold the set of result records Dim strSQL As String ' This variable will hold the text of the SQL Statement ' If there is nothing in the CustomerID text box If IsNull(CustomerID) Then ' Make the SQL statement strSQL = "SELECT MAX(customerid) + 1 AS NewID FROM customer" ' Run the SQL query against the current database Set rstResults = CurrentDb.OpenRecordset(strSQL) ' If at least 1 record is returned If rstResults.EOF = False Then ' Assign the NewID to the CustomerID field CustomerID = rstResults!NewID End If rstResults.Close ' Close up the result set Set rstResults = Nothing ' Empty out the result set End If Exit Sub ErrorHandler: Set rstResults = Nothing End Sub
Kode akan terlihat seperti berikut setelah semuanya terpasang:
Simpan file dan kemudian lihat formulir CustomerDataEntry. Navigasikan ke catatan baru, lalu klik dua kali di bidang ID Pelanggan. CustomerID baru harus dibuat secara otomatis.