Masuk dengan Microsoft
Masuk atau buat akun.
Halo,
Pilih akun lain.
Anda memiliki beberapa akun
Pilih akun yang ingin Anda gunakan untuk masuk.

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.

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. Tapi bagaimana jika Anda ingin mempertahankan variabel khusus pengguna di seluruh sesi? Anda dapat menyimpan tipe nilai ini dalam tabel lokal. Di Northwind 2.0, satu variabel tersebut 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.

Pengembang seringkali perlu mengirimkan parameter dari satu formulir ke formulir lain, atau dari formulir ke laporan. Parameter ini menyampaikan informasi penting, yang kemudian akan digunakan fungsi yang disebut untuk mengonfigurasi dirinya sendiri. Ada beberapa cara untuk formulir atau laporan kedua mendapatkan informasi dari formulir pertama. Berikut adalah beberapa cara tersebut: 

  1. Formulir kedua dapat "melihat kembali" ke formulir pertama untuk mengambil beberapa nilai, mungkin dalam kontrol yang terlihat atau tidak terlihat.  Misalnya:
    lngCustomerID = Forms!FirstForm!cboCustomerID 

  2. Formulir pertama dapat menyimpan nilai ke variabel global atau ke TempVars. Misalnya:
    g_lngUserID = Me.cboUserID 
    TempVars.Add "UserID", Me.cboUserID 

Metode yang sering digunakan dalam Northwind Developer Edition serta dalam kehidupan profesional kami menggunakan argumen OpenArgs dari DoCmd.OpenForm atau OpenReport. Misalnya:

DoCmd.OpenForm "frmCompanyDetail", OpenArgs:=StringFormat("CompanyID={0} &CompanyTypeID={1}", Me.VendorID, ctVendor)

Kami menggabungkan dua teknik di sini: (1) penggunaan OpenArgs untuk lulus dalam VendorID dan VendorType, dan (2) penggunaan fungsi StringFormat() untuk membuat, misalnya, string ini: 

CompanyID=5&CompanyTypeID=2 

String ini terlihat sangat mirip dengan string kueri seperti yang digunakan di browser. Ini berisi satu atau beberapa "pasangan nama/nilai" yang dipisahkan oleh karakter ampersand: 

name1=value1&name2=value2


Keuntungan string tersebut adalah bahwa setiap nilai memiliki nama. Bandingkan ini dengan pendekatan yang lebih sederhana di mana Anda akan mengatur OpenArgs hanya ke "5,2".  Dalam kasus seperti itu, butuh upaya untuk mencari tahu apa yang ditandatangani oleh setiap nilai. Penamaan setiap nilai membuat string kueri "menjelaskan sendiri" yang merupakan praktik pemrograman yang baik.

Pada akhir penerimaan DoCmd.OpenForm , kami biasanya berada dalam acara Form_Open atau Form_Load dan ingin menguraikan string OpenArgs ke dalam komponennya.

Di Northwind, Anda dapat melakukan ini dengan fungsi StringToDictionary . Diperlukan fungsi seperti querystring dan memilahnya ke dalam komponennya. Komponen ini kemudian disimpan dalam objek Scripting.Dictionary . Perhatikan bahwa melakukan hal ini mengharuskan Anda menggunakan Alat > Referensi dan mengatur referensi ke Microsoft Scripting Runtime (scrrun.dll).

Fitur dan manfaat objek Kamus meliputi:  

  • Urutan elemen tidak penting

  • Fungsi sederhana untuk menambahkan dan menghapus elemen koleksi

  • Fungsi untuk mengulang kumpulan, sehingga Anda dapat mengetahui apa yang ada di dalamnya

  • Fungsi Exists sehingga Anda dapat menguji apakah elemen tertentu tersedia

Penggunaan objek kamus muncul di seluruh Northwind. Misalnya, acara Form_Load di frmGenericDialog.

Makro yang dibuat dengan Panduan Kontrol di Access jarang menyertakan penanganan kesalahan; VBA yang dibuat dengan Control Wizards mungkin terbatas pada MsgBox Err.Description generik.

Di Northwind 2.0 kami menunjukkan kepada Anda cara melakukannya dengan lebih baik saat menggunakan 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. Di Starter Edition, fungsi ini membuat contoh clsErrorHandler dan menyimpannya sebagai variabel global yang tersedia untuk digunakan di seluruh aplikasi. Di Edisi Dev, kelas statis digunakan – lihat komentar di bagian atas modul kelas.

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). Baik Northwind 2.0 edisi templat Starter dan Pengembang pada awalnya dilengkapi dengan pendekatan penanganan kesalahan ini. 
'

PENANGANAN KESALAHAN YANG DISEMPURNAKAN

Dimulai dengan versi 2.2 Dari Northwind Developer Edition, penanganan kesalahan telah disempurnakan, berkat umpan balik dari komunitas Access. Edisi starter tidak berubah. 

Pada dasarnya, penanganan kesalahan dalam versi sebelumnya (2.0 - dirilis pada April 2023) adalah:

Public Sub HandleError(…)
    MsgBox Err.Description
End Sub


Dalam versi 2.2, pemutakhiran ke:

Public Sub HandleError (…, Optional ByVal IsEventProcedure As Boolean = False)
    If Not IsEventProcedure Then
        Err.Raise lngError, strErrSource
    End If
    MsgBox Err.Description
End Sub


Untuk memahami mengapa perubahan ini dilakukan, mari kita terlebih dahulu memahami apa yang membuat kode berjalan:

  • Makro AutoExec memanggil prosedur Startup, yang melakukan beberapa inisialisasi sebelum membuka formulir pertama.

  • Pengguna berinteraksi dengan aplikasi, seperti membuka formulir atau mengklik tombol, yang menyebabkan prosedur kejadian terjadi seperti Form_Load dan cmdPrintInvoice_Click.
    '

Selain prosedur kejadian, aplikasi memiliki subroutine dan fungsi--sebagian besar dalam modul--dan kode tersebut disebut dari prosedur kejadian. Ini disebut prosedur "standar".

Dalam versi 2.0 Northwind, prosedur standar akan menangani kesalahan mereka sendiri dengan pesan, tetapi mereka tidak akan memberi tahu prosedur kejadian panggilan bahwa kesalahan telah terjadi. Ini bisa buruk jika prosedur kejadian memiliki kode berikutnya yang harus berjalan terlepas dari kesalahan sebelumnya yang ditangani oleh prosedur yang disebut. Tentu, kita bisa mengganti subroutine dengan fungsi yang mengembalikan keberhasilan atau kegagalan, dan mengkode prosedur kejadian dengan tepat, tetapi itu tidak selalu menjadi opsi.

Di Northwind versi 2.2 prosedur standar tidak menangani pesan kesalahan, melainkan menggunakan Err.Raise, laporkan kembali ke prosedur kejadian panggilan. Prosedur kejadian panggilan kemudian menampilkan kesalahan dan resume yang ditingkatkan pada Exit_Handler. Ini lebih baik, karena memungkinkan prosedur panggilan untuk menyimpulkan dengan anggun.

Untuk menggunakan kode Northwind versi 2.2, prosedur kejadian harus masuk ke HandleErratau argumen ketiga yang mengindikasikan bahwa penelepon adalah prosedur kejadian. Northwind Dev Edition telah diperbarui untuk melakukannya.

Modul penanganan kesalahan yang lebih kuat akan memiliki dukungan untuk prosedur "pushing dan popping" pada "tumpukan" (array). Elemen pertama akan selalu menjadi prosedur kejadian, sehingga argumen ekstra tidak diperlukan. Implementasi ini di luar tujuan Northwind Dev Edition.

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: 

  1. Tabel untuk menyimpan informasi MRU.

  2. Kode untuk memperbarui tabel saat pesanan atau pesanan pembelian (PO) dibuka.

  3. Kode untuk memperbarui menu menurun MRU di pita.

  4. 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.

Perlu bantuan lainnya?

Ingin opsi lainnya?

Jelajahi manfaat langganan, telusuri kursus pelatihan, pelajari cara mengamankan perangkat Anda, dan banyak lagi.

Komunitas membantu Anda bertanya dan menjawab pertanyaan, memberikan umpan balik, dan mendengar dari para ahli yang memiliki pengetahuan yang luas.

Apakah informasi ini berguna?

Seberapa puaskah Anda dengan kualitas bahasanya?
Apa yang memengaruhi pengalaman Anda?
Dengan menekan kirim, umpan balik Anda akan digunakan untuk meningkatkan produk dan layanan Microsoft. Admin TI Anda akan dapat mengumpulkan data ini. Pernyataan Privasi.

Terima kasih atas umpan balik Anda!

×