Pengantar.
Minggu lalu kami telah mencoba contoh untuk melewatkan Objek Kelas Dasar, melalui Set Property Procedure, untuk menjadi bagian dari Object di memori. Obyek yang dilewatkan menjadi perpanjangan atau Obyek anak dari Obyek Utama di memori. Dalam program kami sebelumnya, melewatkan Objek anak ke Objek Target dilakukan pada fase pembuatan contoh program pengujian kami. Kami telah menetapkan nilai ke Properti Objek yang diteruskan di bagian akhir program. Contoh selanjutnya sedikit berbeda.
Bagi mereka yang ingin membaca Artikel sebelumnya tentang Modul Kelas MS-Access, tautannya diberikan di bawah ini:
- Modul Kelas MS-Access dan VBA
- Array Objek Kelas VBA MS-Access
- Kelas Dasar MS-Access dan Objek Turunannya
- Kelas Dasar VBA dan Objek Turunan-2
Kali ini kita akan membuka kedua Objek (ClsArea – kelas dasar, ClsVolume2 – Kelas target) secara terpisah dalam program pengujian kami. Tetapkan nilai ke dalam Properti ClsArea Kelas Dasar, sebelum meneruskannya ke Objek Kelas ClsVolume2 target. Ingat Kelas Volume2 hanya memiliki satu Properti sendiri, p_Height Properti, dan Metodenya Volume() membutuhkan Panjang dan Lebar Nilai ClsArea Kelas Dasar untuk menghitung Volume.
- Copy dan Paste contoh Kode Tes berikut ini ke dalam Modul Standar.
Prosedur SetNewVol2_2.
Public Sub SetNewVol2_2() 'Method 2/2 Dim CA As ClsArea Dim Vol As ClsVolume2 Set CA = New ClsArea Set Vol = New ClsVolume2 CA.strDesc = "Bed Room" CA.dblLength = 90 CA.dblWidth = 10 Stop 'Here ClsArea class Object CA is passed to the ‘Property procedure Set CArea of ClsVolume2 object Vol Set Vol.CArea = CA 'Pass ClsArea obj to ClsVolume2 Vol.dblHeight = 10 'assign height to ClsVolume2 Debug.Print "Description", "Length", "Width", "Area", "Height", "Volume" With Vol.CArea Debug.Print .strDesc, .dblLength, .dblWidth, .Area(), Vol.dblHeight, Vol.Volume() End With Stop Set CA = Nothing Set Vol = Nothing End Sub
Ulasan Kode VBA.
Dalam Redup pertama pernyataan, CA didefinisikan sebagai Objek ClsArea dan Vol sebagai Objek ClsVolume2. Dua pernyataan berikutnya menginstansiasi kedua objek dalam memori.
Tiga pernyataan berikutnya memberikan nilai pada properti Objek Kelas ClsArea.
Berhenti pernyataan memberikan jeda dalam eksekusi Kode sehingga kami dapat memverifikasi nilai Properti Objek di Jendela Lokal.
Tetapkan Vol.CAArea =CA pernyataan menetapkan ClsArea Class Object CA, sebagai objek anak ke dalam Vol (ClsVolume2) Objek.
Pada langkah Berikutnya dblHeight Properti Objek Kelas ClsVolume2 ditetapkan dengan nilai 10.
Pernyataan berikutnya sebelum pernyataan Stop mencetak Nilai dari memori ke Jendela Debug.
Dua Setel berikutnya Pernyataan menghapus Objek dari memori, sebelum mengakhiri program.
Menampilkan Jendela Lokal.
- Pilih Jendela Lokal Opsi dari Menu Tampilan.
- Klik di suatu tempat di tengah Kode dan tekan F5 untuk menjalankan kode hingga program berhenti di Stop penyataan. Atau, Anda dapat menekan F8 untuk menjalankan kode selangkah demi selangkah untuk memeriksa Perubahan di Jendela Lokal, di setiap langkah.
- Klik [+] Simbol untuk memperluas dan menampilkan Properti dan nilai Objek.
- Periksa Area CA dan p_Area Referensi objek di Nilai kolom Vol Objek. Nilai di sana ditampilkan sebagai Tidak Ada karena kita belum melewati Object CA ke Object Vol.
- Jika Anda telah selesai melihat konten Locals Window, jalankan kode tersebut hingga Stop berikutnya penyataan. Sekarang, Area CA Dapatkan Prosedur Properti dan p_Area Objek ditetapkan dengan Objek Kelas ClsArea.
Kami akan mencoba contoh Varian lain dari kedua Kelas ini ClsArea dan ClsVolume2.
Modul Kelas Baru ClsVolume3.
1. Masukkan Modul Kelas baru dan ubah namanya Nilai Properti menjadi ClsVolume3 .
2. Salin dan Tempel Kode VBA berikut ke dalam Modul Kelas ClsVolume3:
Option Compare Database Option Explicit 'Method three Private p_Height As Double Public p_Area As ClsArea Public Property Get dblHeight() As Double dblHeight = p_Height End Property Public Property Let dblHeight(ByVal dblNewValue As Double) p_Height = dblNewValue End Property Public Function Volume() As Double Volume = p_Area.dblLength * p_Area.dblWidth * Me.dblHeight End Function Private Sub Class_Initialize() Set p_Area = New ClsArea End Sub Private Sub Class_Terminate() Set p_Area = Nothing End Sub
Periksa Kode dari awal:p_Height dinyatakan sebagai milik pribadi. Area p_ Properti Kelas ClsVolume3 dinyatakan sebagai Publik Objek ClsArea. Artinya p_Area akan muncul sebagai Properti Kelas ClsVolume3 dengan propertinya sendiri yang dapat ditampilkan untuk Dapatkan/Biarkan langsung operasi di Program Pengguna di Modul Standar. Meskipun Objek Kelas ClsArea telah dinyatakan sebagai Properti Umum Kelas ClsVolume3, Propertinya dienkapsulasi dalam Kelas ClsArea itu sendiri.
Periksa Class_Initialize() dan Kelas_Terminasi() Sub-rutin. Objek ClsArea dibuat dalam Kode Class_Initialize() dan menghapus Objek dari memori dalam Kode Class_Terminate(), ketika program pengguna berakhir.
Program Pengujian.
Contoh Kode VBA Uji diberikan di bawah ini.
Salin dan Tempel kode ke Modul Standar.
Public Sub SNewVol3() 'Here ClsArea class is declared as a Public Property of ClsVolume3 Dim volm As ClsVolume3 Set volm = New ClsVolume3 volm.p_Area.strDesc = "Bed Room" volm.p_Area.dblLength = 15 'assign length volm.p_Area.dblWidth = 10 'assign width in clsArea volm.dblHeight = 10 'assign height to ClsVolume2 Debug.Print "Description", "Length", "Width", "Area", "Height", "Volume" With volm.p_Area Debug.Print .strDesc, .dblLength, .dblWidth, .Area, volm.dblHeight, volm.Volume End With Set volm = Nothing End Sub
Tampilkan Jendela Lokal (Lihat - -> Jendela Lokal), jika belum terbuka.
Klik di suatu tempat di tengah kode dan tekan F8 untuk mengeksekusi Kode VBA satu baris pada satu waktu dan melihat Jendela Lokal untuk melacak apa yang terjadi pada setiap langkah.
Semua varian Kelas ClsVolume di atas telah ditulis dengan Kode yang lebih sedikit, kecuali contoh pertama Kelas ClsVolume.
Bekerja dengan Objek Recordset.
Minggu depan kita akan bekerja dengan Object bawaan DAO.Recordset dan buat Modul Kelas ke:
- Menghitung dan memperbarui Bidang,
- Urutkan Data,
- Cetak data yang diurutkan ke dalam Jendela Debug,
- dan Buat Klon Tabel dengan data yang Diurutkan.
Itu banyak aksi minggu depan.
Daftar Semua Tautan pada Topik ini.
- Modul Kelas MS-Access dan VBA
- Array Objek Kelas VBA MS-Access
- Kelas Dasar MS-Access dan Objek Turunannya
- Kelas Dasar VBA dan Objek Turunan-2
- Varian Kelas Dasar dan Objek Turunan
- Set Rekaman Ms-Access dan Modul Kelas
- Mengakses Modul Kelas dan Kelas Pembungkus
- Transformasi Fungsionalitas Kelas Wrapper
- Dasar-dasar Ms-Access dan Objek Koleksi
- Modul Kelas Ms-Access dan Objek Koleksi
- Rekaman Tabel dalam Objek dan Formulir Koleksi
- Dasar-dasar Objek Kamus
- Dasar-Dasar Objek Kamus-2
- Mengurutkan Kunci Objek dan Item Kamus
- Menampilkan Rekaman dari Kamus ke Formulir
- Menambahkan Objek Kelas sebagai Item Kamus
- Memperbarui Item Kamus Objek Kelas pada Formulir