Konten di sini mungkin berlaku untuk Northwind 2.0 Developer Edition dan Starter Edition.
VBA (Visual Basic for Applications) adalah bahasa pemrograman yang digunakan di semua Produk Office. Pembelajaran VBA memungkinkan Anda untuk bekerja dengan semua produk Office (tidak hanya Access).
Saat mencari "petunjuk", pastikan untuk mencari contoh spesifik Access dan sertakan Microsoft Access dalam pencarian. Sering kali solusi untuk produk Office lainnya akan berfungsi - tetapi tidak ada jaminan. Microsoft Access adalah produk dewasa; itu berarti ada banyak contoh di luar sana; yang bagus untuk Anda!
Ini juga berarti bahwa buku-buku lama di pemrograman Access masih dapat Anda lihat. Banyak buku lama masih tersedia di situs buku bekas dengan biaya aslinya. Periksa situs web Microsoft untuk menentukan versi Access apa yang masih didukung dan lanjutkan dengan versi tersebut.
Akhir sumber daya dukungan untuk Office - Menyebarkan Office | Microsoft Learn
Berikut adalah beberapa tautan ke dokumentasi Access di Microsoft.
File Microsoft Access adalah file Office. File Office harus berada di "Lokasi Tepercaya" atau memiliki "konten diaktifkan". Item ini dianggap "aman" karena Anda membuatnya, atau item tersebut berasal dari sumber tepercaya. Periksa Lokasi Tepercaya terjadi setiap kali Anda membuka File office apa pun. Kami akan menyebutnya sebagai Tepercaya/Diaktifkan dari sini pada. CATATAN: Jika versi baru aplikasi dirilis dan dibuka dari lokasi yang tidak tepercaya, proses pengaktifan konten akan diulang.
Pelajari selengkapnya tentang Lokasi Tepercaya.:
Makro, Fungsi, dan Sub adalah cara Anda menerapkan logika bisnis ke database Access Anda. Penting bagi Anda untuk memahami Lingkup dan Visibilitas sebelum memulai.
Kejadian (seperti mengklik kontrol) pada Kontrol pada formulir (misalnya tombol, kotak teks, label, dll.) memicu proses lain, seperti menambahkan, menghapus rekaman, atau membuka formulir. Proses ini dapat diterapkan menggunakan makro atau VBA. Northwind Starter Edition sebagian besar menggunakan makro, dan beberapa VBA di mana makro tidak dapat melakukan fungsi yang diperlukan. Northwind Developer Edition terutama menggunakan VBA.
Beberapa tipe kontrol memiliki panduan bawaan untuk membuat makro secara otomatis. Misalnya, menambahkan tombol perintah ke formulir akan membuka panduan yang menawarkan beberapa pilihan fungsionalitas untuk tombol. Menambahkan kotak kombo membuka panduan yang bisa dikonfigurasi untuk menemukan catatan tertentu pada formulir.
Panel Navigasi adalah cara utama Anda menampilkan dan mengakses semua objek database dan ditampilkan di sisi kiri jendela Access secara default.
Panel Navigasi Northwind telah dikustomisasi. Kami membuat kategori kustom yang disebut Northwind Starter 2.0. Ini memungkinkan kita untuk menata objek berdasarkan area fungsi.
Penting untuk mempelajari tentang Lingkup dan Visibilitas dalam Access/Office. Anda dapat memulai di sini:
Kadang-kadang Anda memerlukan variabel untuk ada setelah objek yang membuatnya keluar dari lingkup. Lihat Lingkup dan Visibilitas di atas. Ada tiga cara utama untuk melakukan ini: Variabel Publik, TempVars dan Penyimpanan nilai dalam tabel lokal. Banyak pengembang menggunakan campuran ini. Masing-masing memiliki pro dan kontra. Selengkapnya tentang masing-masing di sini:
Variabel Publik Modul VBA:
TempVars:
Menyimpan nilai dalam tabel lokal
-
Variabel publik dan TempVars ada untuk sesi saat ini dan keluar dari lingkup ketika aplikasi ditutup. Bagaimana jika Anda ingin menyimpan variabel khusus pengguna di seluruh sesi? Anda dapat menyimpan tipe nilai tersebut dalam tabel lokal. Di Northwind 2.0 satu variabel disimpan dalam tabel yang disebut SystemSettings. Nilai dalam tabel adalah ShowWelcome. Nilai ini memberi tahu Access jika Anda ingin melihat layar Selamat Datang setiap kali Anda masuk atau tidak.
Makro yang dibuat dengan Panduan Kontrol di Access jarang menyertakan penanganan kesalahan; VBA dibuat, dengan Panduan Kontrol mungkin terbatas pada MsgBox Err.Description generik.
Di Northwind 2.0 kami menunjukkan cara melakukannya dengan lebih baik—setidaknya untuk kode VBA. Kami telah mengimplementasikan apa yang disebut Global Error Handler. Kesalahan yang terjadi dalam prosedur apa pun memanggil fungsi di tingkat global untuk memperlihatkan kesalahan. Keuntungan besar di sini adalah bahwa penanganan kesalahan konsisten. Dan jika pesan perlu diubah (misalnya, untuk memperlihatkan nomor kesalahan atau untuk mencatat kesalahan ke file), pesan perlu dilakukan di satu tempat saja.
clsErrorHandler adalah Modul Kelas yang mengimplementasikan kode penanganan kesalahan. Modul kelas menyimpan semua fungsi utama dan penolongnya bersama-sama dalam satu unit, sehingga merangkum kode.
Makro AutoExec memanggil fungsi Startup dalam modStartup. Ini membuat contoh clsErrorHandler dan menyimpannya sebagai variabel global sehingga dapat digunakan di seluruh aplikasi.
Bahkan, kode penanganan kesalahan dalam prosedur sangat konsisten sehingga kami dapat membuat semuanya dalam waktu kurang dari lima menit menggunakan kode VBA tertentu yang menyatukan setiap prosedur dengan penanganan kesalahan yang tepat. (Kode tidak disertakan dalam templat).
MRU, atau Paling Baru Digunakan adalah daftar Pesanan dan Pesanan Pembelian yang baru saja digunakan. Anda mungkin ingin sering kembali ke ini untuk meletakkannya di Status berikutnya. Daftar MRU sering terlihat di produk Office sebagai daftar file yang baru saja digunakan yang mungkin ingin Anda buka kembali.
di edisi Northwind Dev, untuk mengimplementasikan fitur MRU (yang tidak ada dalam edisi Starter) Anda harus terlebih dahulu menetapkan item berikut:
-
Tabel untuk menyimpan informasi MRU.
-
Kode untuk memperbarui tabel saat pesanan atau pesanan pembelian (PO) dibuka.
-
Kode untuk memperbarui menu menurun MRU di pita.
-
Kode untuk memuat item saat item MRU dipilih dari pita.
Mari kita lihat masing-masing secara lebih mendetail.
1. Tabel untuk menyimpan informasi MRU.
Desain tabel MRU layak ditinjau, terutama indeksnya. Perhatikan bahwa ada SortIdx indeks duplikat untuk membantu pengurutan cepat item MRU dalam daftar turun bawah pita, serta indeks unik untuk memberlakukan aturan bisnis yang hanya dapat terjadi sekali untuk setiap pengguna. Misalnya, membuka urutan yang sama dua kali tidak membuat dua rekaman dalam tabel MRU.
Tabel memanfaatkan fakta bahwa semua bidang PK (kunci utama) terkait MRU dalam database adalah AutoNumber, sehingga tipe data Bilangan Bulat Panjang dapat digunakan untuk PKValue.
2. Kode untuk memperbarui tabel saat pesanan atau P.O. dibuka.
Di NW2, kami memilih untuk menambahkan ke daftar MRU hanya ketika rekaman baru dibuat, bukan ketika catatan yang sudah ada diperbarui lagi. Kami tentu dapat memindahkan panggilan AddToMRU dari Form_AfterInsert ke Form_AfterUpdate untuk mendukungnya.
Prosedur AddToMRU dan DeleteFromMRU diterapkan dalam modGlobal, yang merupakan Modul Standar yang prosedur publiknya terlihat dari formulir apa pun.
AddToMRU (seperti namanya) menambahkan item baru ke tabel MRU, lalu secara opsional memangkasnya kembali, menghapus rekaman terlama, jika telah berkembang melebihi ukuran maksimal (MAX_MRU_COUNT). Langkah terakhir mungkin yang paling tidak dikenal oleh pengembang Access: menu menurun pita harus direfresh dan diselesaikan dengan memanggil InvalidateControl. Ini adalah sinyal ke pita untuk menjalankan kembali proses inisialisasinya.
3. Kode untuk memperbarui menu menurun MRU di pita.
Pada waktu mulai, dan setelah InvalidateControl dipanggil, sekumpulan fungsi kompleks dijalankan untuk mengisi pita. Prosedur ini disebut dengan Xml Pita dalam tabel uSysRibbons yang mengatakan sebagian:
<group id="gCurrentStatus" label="MRU">
<box id="bxMRU" boxStyle="vertical">
<dropDown id="ddMRU"
getItemCount="ddMRU_GetItemCount"
getItemLabel="ddMRU_GetItemLabel"
getSelectedItemIndex="ddMRU_GetSelectedItemIndex"
getItemID="ddMRU_GetItemID"
onAction="ddMRU_OnAction"
screentip="Most Recently Used Objects">
</dropDown>
</box>
</group>
Keempat fungsi callback ini mengisi menu menurun. Perhatikan bahwa ini adalah ide yang sangat sama seperti yang dijelaskan di sini untuk kotak kombo standar.
Jika Anda menghapus komentar baris Debug.Print di modRibbonCallback dan memulai ulang aplikasi, Jendela Segera akan menyajikan urutan seperti ini:
ddMRU_GetItemCount ddMRU 6
ddMRU_GetItemLabel ddMRU 0 Order 60, Proseware, Inc.
ddMRU_GetItemID ddMRU 0 2
ddMRU_GetItemLabel ddMRU 1 Order 62, Best For You Organics Company
ddMRU_GetItemID ddMRU 1 4
ddMRU_GetItemLabel ddMRU 2 Order 63, Wide World Importers
ddMRU_GetItemID ddMRU 2 5
ddMRU_GetItemLabel ddMRU 3 Order 66, Proseware, Inc.
ddMRU_GetItemID ddMRU 3 8
ddMRU_GetItemLabel ddMRU 4 Order 67, Best For You Organics Company
ddMRU_GetItemID ddMRU 4 9
ddMRU_GetItemLabel ddMRU 5 Order 68, Adatum Corporation
ddMRU_GetItemID ddMRU 5 10
ddMRU_GetSelectedItemIndex ddMRU 0
Kita dapat melihat di sini bahwa Access pertama kali memanggil prosedur yang mengembalikan jumlah item untuk dimuat dalam argumen ByRef ddMRU_GetItemCount. Ini juga waktu ketika kita membuka kueri pada tabel MRU dan menyinggahkannya karena akan digunakan beberapa kali.
Pita kemudian berulang kali memanggil dua prosedur untuk mendapatkan nilai ID dan Label untuk menu menurun dua kolom.
Terakhir, ini memanggil prosedur untuk melenyapkan item mana yang harus dipilih. (Dalam kasus kami, itu adalah yang pertama.)
4. Kode untuk memuat item saat item MRU dipilih dari pita.
Sama seperti item pita lainnya, properti OnAction di Xml Pita menentukan fungsi callback yang akan digunakan untuk melakukan tindakan:
onAction="ddMRU_OnAction
Prosedur ini diterapkan dalam modRibbonCallback. Ini menggunakan kembali kumpulan rekaman yang sudah terbuka untuk menemukan catatan dengan item yang dipilih, lalu, tergantung pada TableName diperlukan, membuka formulir terkait, yang masuk dalam nilai PK yang akan dimuat.
-
Northwind 2.0 Edisi Pengembang: Template-Tutorial
-
Northwind 2.0 Edisi Pengembang: Semua topik