Access
 sql >> Teknologi Basis Data >  >> RDS >> Access

Array Objek Kelas VBA Ms-Access

Pengantar.

Minggu lalu kami memiliki pengenalan singkat tentang Objek Kelas Khusus simple yang sederhana dengan hanya dua Properti, untuk Panjang dan Lebar Nilai. Metode untuk menghitung Luas apa pun, dengan Nilai Panjang dan Lebar. Semoga Anda memahami dasar-dasar Modul Kelas Kustom Ms-Access. Jika tidak, ini tautannya:Modul Kelas Ms-Access dan VBA. Silakan kunjungi halaman sebelum melanjutkan.

Objek Modul Kelas menyimpan banyak Kode di Program Anda. Ketika Anda menemukan sesuatu yang Anda lakukan berulang kali dalam Kode, pikirkan Objek Modul Kelas. Kode berulang dapat diubah menjadi fungsi utilitas juga, tetapi untuk Objek Kelas, Anda harus mengambil pendekatan yang berbeda.

Untuk tugas sederhana, mungkin diperlukan lebih banyak kode untuk menyempurnakan fungsi Objek Modul Kelas, tetapi program modul utama Anda akan sederhana dan semua kode rumit yang dikembangkan dan disempurnakan akan tetap tersembunyi dari yang lain.

Tapi untuk saat ini, kita memiliki Modul Kelas sederhana di tangan kita akan mencoba cara membuat array Objek untuk menghitung Luas dari banyak item.

Sub-Rutinitas ClassArray().

Contoh Kode VBA dalam Modul Standar membuat Array lima Objek Kelas ClsArea dan mencetak Nilai Properti dan Hasil Metodenya di Jendela Debug. Salin dan Tempel (atau lebih baik jika Anda mengetiknya, untuk mengetahui setiap baris lebih baik apa yang mereka lakukan) kode berikut ke dalam Modul Standar:

Public Sub ClassArray()
Dim tmpA As ClsArea
Dim CA() As ClsArea
Dim j As Long, title As String
Dim L As Long, U As Long

title = "ClassArray"
For j = 1 To 5 ‘the Loop is set for 5 items
  'instantiate temporary ClsArea Object
  'to enter input
  Set tmpA = New ClsArea

tmpA.strDesc = InputBox(Str(j) & ") Description:", title, "")
     tmpA.dblLength = InputBox(Str(j) & ") Enter Length:", title, 0)
     tmpA.dblWidth = InputBox(Str(j) & ") Enter Width:", title, 0)
    
  'Redimension Array
  ReDim Preserve CA(1 To j) As ClsArea
  Set CA(j) = tmpA   'Copy Object to Array
  
Set tmpA = Nothing 'Remove temporary object from memory.
Next


‘PRINTING SECTION
'Print the Array contents into the Debug Window
L = LBound(CA)
U = UBound(CA)

Debug.Print "Description", "Length", "Width", "Area"
For j = L To U
  With CA(j)
    Debug.Print .strDesc, .dblLength, .dblWidth, .Area
  End With
Next

’stop

'Clear array objects from memory
For j = L To U
   Set CA(j) = Nothing
Next

End Sub
 

Klik di suatu tempat di tengah Kode dan tekan F5 untuk mengeksekusi Kode. Masukkan Nilai untuk Deskripsi, Panjang, dan Lebar dari Keyboard untuk 5 Item berbeda, satu demi satu.

Contoh Jalankan Program diberikan di bawah ini:

Description   Length        Width         Area
Door Mat       5             8             40 
Carpet         12            23            276 
Bed Room       21            23            483 
Store Room     15            25            375 
Terrace        40            50            2000 

Ulasan Kode Baris demi Baris.

Mari kita periksa kode baris demi baris. Di area deklarasi, kami telah mendeklarasikan Variabel Objek tmpA Jenis ClsArea. Di baris kedua menyatakan Array kosong CA() Jenis ClsArea. Jumlah elemen yang diperlukan akan diukur ulang nanti dalam program.

Di dua baris berikutnya, kami telah mendeklarasikan variabel title dari tipe String dan j, L, dan U variabel tipe Integer Panjang.

Selanjutnya, variabel judul diinisialisasi dengan string 'ClassArray' dan akan digunakan sebagai Judul di Fungsi InputBox(). Untuk….Selanjutnya loop diatur dengan variabel kontrol j untuk menjalankan loop lima kali. Setelah dua baris komentar berikutnya, Set pernyataan membuat instance (mengalokasikan memori) Objek Kelas ClsArea di memori dengan nama tmpA .

Tiga baris kode berikutnya berfungsi untuk memasukkan nilai untuk strDesc , dblLength, dan dblWidth Properti Objek Kelas tmpA.

Setelah baris komentar berikutnya, ClsArea Class Object (CA) didimensi ulang untuk 1 hingga j kali (1 hingga 1 kali) dengan mempertahankan elemen Objek yang ada, jika ada (ini adalah Objek pertama dalam Array). Ini akan terus meningkat, melalui ReDim pernyataan, ke 1 hingga 2, 1 hingga 3, 1 hingga 4, dan 1 hingga 5 dengan mempertahankan nilai objek sebelumnya, dalam For . . . putaran berikutnya. Cagar Alam kata kunci memastikan bahwa objek array yang ada tidak hilang.

Catatan: Pernyataan Re-Dimension menambah/mengurangi jumlah elemen objek yang ditentukan tetapi menghapus objek yang ada yang dimuat ke dalam array sebelumnya, tanpa Preserve kata kunci.

Set pernyataan di baris berikutnya menyalin Objek tmpA, dengan datanya ke dalam CA(j) Objek ClsArea baru dibuat j elemen larik.

Baris berikutnya Setel tmpA =Tidak Ada menghapus objek sementara dari memori.

Loop For…Next mengulangi tindakan ini empat kali lagi untuk memasukkan item lain ke objek sementara yang baru dibuat tmpA, satu demi satu, dan menyalin objek ke dalam CA Object Array.

Dua baris berikutnya, setelah baris komentar, temukan rentang indeks Array Objek (mencari angka indeks terendah dan tertinggi.

Debug.Print berikutnya pernyataan mencetak baris judul di 14 zona kolom di Jendela Debug. Untuk . . . Selanjutnya loop dengan L dan U rentang nomor indeks array terikat menjalankan pernyataan dalam untuk mengakses setiap Objek dari Array CA, dengan nomor indeks pada variabel kontrol j.

Referensi objek saat ini disetel dalam Dengan. . . Akhiri Dengan struktur, daripada mengulang nama Objek CA(j).strDesc, CA(j).dblLength, CA(j).dblWidth dan CA(j).Area untuk mencetak hasil Nilai Properti Objek dan Area Metode() pada Jendela Debug.

Hapus simbol komentar dari ‘Stop pernyataan untuk membuat jeda di Program pada pernyataan Berhenti. Jalankan kode lagi dan masukkan 5 detail item sehingga Anda dapat bereksperimen dengan Objek Array. Anda dapat secara selektif menangani salah satu Properti Objek, dengan nomor Indeks Array, untuk mengedit atau mencetak nilai apa pun pada Jendela Debug seperti yang ditunjukkan di bawah ini.


Pernyataan Set CA(j) =Tidak Ada dalam Untuk. . . Loop Berikutnya menghapus objek array, satu per satu dari Memori.

Meneruskan Array Objek Kelas sebagai Parameter Fungsi.

Kita dapat meneruskan Array Objek Kelas sebagai Parameter ke program, seperti yang kita lakukan dengan Tipe Data Buatan Pengguna.

Mari kita buat Subrutin Percetakan sederhana, dengan memotong Kode Bagian Pencetakan, dari program utama, dan menempatkannya ke dalam program baru.

Salin Kode sub-rutin ClassArray(), Tempelkan di Modul Standar yang sama dan ubah namanya menjadi ClassArray2(), seperti yang ditunjukkan di bawah ini.

Public Sub ClassArray2()
Dim tmpA As ClsArea
Dim CA() As ClsArea
Dim j As Long, title As String
Dim L As Long, U As Long

title = "ClassArray"
For j = 1 To 5 ‘the Loop is set for 5 items
  'instantiate temporary ClsArea Object
  'to enter input
  Set tmpA = New ClsArea

     tmpA.strDesc = InputBox(Str(j) & ") Description:", title, "")
     tmpA.dblLength = InputBox(Str(j) & ") Enter Length:", title, 0)
     tmpA.dblWidth = InputBox(Str(j) & ") Enter Width:", title, 0)
    
  'Redimension Array
  ReDim Preserve CA(1 To j) As ClsArea
  Set CA(j) = tmpA   'Copy Object to Array
  
 Set tmpA = Nothing 'Remove temporary object from memory.
Next

‘PRINTING SECTION
'Print the Array contents into the Debug Window
L = LBound(CA)
U = UBound(CA)

Debug.Print "Description", "Length", "Width", "Area"
For j = L To U
  With CA(j)
    Debug.Print .strDesc, .dblLength, .dblWidth, .Area
  End With
Next

’stop

'Clear array objects from memory
For j = L To U
   Set CA(j) = Nothing
Next

End Sub
 

Bagian Kode ClassArray2 Tanpa Mencetak.

Buat Sub-Rutin baru seperti yang diberikan di bawah ini:

Public Sub ClassPrint(ByRef clsPrint() As ClsArea)
Dim L As Long, U As Long
Dim j As Long

End Sub

Sorot Bagian Pencetakan hingga pernyataan 'Stop di Program ClassArray2(), potong area Kode yang disorot, dan tempel di bawah Redup pernyataan di ClassPrint() Program. Versi modifikasi dari kedua Kode diberikan di bawah ini:

Public Sub ClassArray2()
Dim tmpA As ClsArea
Dim CA() As ClsArea
Dim j As Long, title As String

title = "ClassArray"
For j = 1 To 5 ‘the Loop is set for 5 items
  'instantiate temporary ClsArea Object
  'to enter input
  Set tmpA = New ClsArea
     tmpA.strDesc = InputBox(Str(j) & ") Description:", title, "")
     tmpA.dblLength = InputBox(Str(j) & ") Enter Length:", title, 0)
     tmpA.dblWidth = InputBox(Str(j) & ") Enter Width:", title, 0)
    
  'Redimension Array
  ReDim Preserve CA(1 To j) As ClsArea
  Set CA(j) = tmpA   'Copy Object to Array
  
 Set tmpA = Nothing 'Remove temporary object from memory.
Next

Call ClassPrint(CA) ‘Pass the Object Array to print routine

'Clear array objects from memory
For j = L To U
   Set CA(j) = Nothing
Next

End Sub

Program ClassPrint().

Public Sub ClassPrint(ByRef clsPrint() As ClsArea)
Dim L As Long, U As Long
Dim j As Long

'Printing Section
'Print the Array Contents into the Debug Window.
L = LBound(clsPrint)
U = UBound(clsPrint)

Debug.Print "Description", "Length", "Width", "Area"
For j = L To U
  With clsPrint(j)
    Debug.Print .strDesc, .dblLength, .dblWidth, .Area
  End With
Next

End Sub

Periksa perubahan kode di kedua program dan lakukan koreksi, di mana pun berlaku. Klik di tengah kode ClassArray2() dan tekan F5 untuk menjalankan program.

Pernyataan Panggilan dalam program pertama meneruskan Array Objek Kelas CA sebagai Parameter ByRef ke Subrutin ClassPrint(). Program mencetak Object Properties dan memanggil fungsi Area() untuk menghitung dan mengembalikan nilai yang akan dicetak.

Minggu depan kita akan belajar bagaimana menggunakan modul Kelas ClsArea sebagai Kelas Dasar untuk membuat Objek Kelas VBA baru untuk menghitung Volume dari sesuatu.

  1. Modul Kelas MS-Access dan VBA
  2. Array Objek Kelas VBA MS-Access
  3. Kelas Dasar MS-Access dan Objek Turunannya
  4. Kelas Dasar VBA dan Objek Turunan-2
  5. Varian Kelas Dasar dan Objek Turunan
  6. Set Rekaman Ms-Access dan Modul Kelas
  7. Mengakses Modul Kelas dan Kelas Pembungkus
  8. Transformasi Fungsionalitas Kelas Wrapper
  9. Dasar-dasar Ms-Access dan Objek Koleksi
  10. Modul Kelas Ms-Access dan Objek Koleksi
  11. Rekaman Tabel dalam Objek dan Formulir Koleksi
  12. Dasar-dasar Objek Kamus
  13. Dasar-Dasar Objek Kamus-2
  14. Mengurutkan Kunci Objek dan Item Kamus
  15. Menampilkan Rekaman dari Kamus ke Formulir
  16. Menambahkan Objek Kelas sebagai Item Kamus
  17. Memperbarui Item Kamus Objek Kelas pada Formulir


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 5 Tip Basis Data Praktis untuk Pemula

  2. Mencari Data Microsoft Access dengan Elasticsearch

  3. Akses konektor dataverse sekarang tersedia untuk diuji

  4. Cara Membuat Bidang Terhitung dalam Kueri Microsoft Access

  5. Membuat Dependensi Opsional